Sonraí Táirge Amazon ag scríobadh le Python

Tuairimí: 0

Tá rochtain ar shonraí ó fhathaigh ríomhthráchtála mar Amazon ríthábhachtach le haghaidh anailíse margaidh, straitéisí praghsála, agus taighde táirgí. Is féidir na sonraí seo a bhailiú trí scríobadh gréasáin, modh a bhaineann le suimeanna móra faisnéise a bhaint as láithreáin ghréasáin. Mar sin féin, cosnaíonn Amazon a chuid sonraí go dian, rud a fhágann go mbíonn teicnící scríobtha traidisiúnta neamhéifeachtach go minic. Sa treoir chuimsitheach seo, bainfimid na modhanna chun sonraí táirge a bhailiú ó Amazon agus pléifimid straitéisí chun córais fhrith-scrapála láidre an ardáin a shárú. Déanfaimid iniúchadh ar úsáid Python, Proxies, agus ardteicnící scríobtha ar féidir leo cabhrú leis na dúshláin seo a shárú agus na sonraí a theastaíonn chun do ghnó nó taighde a bhaint go héifeachtach.

Script Python a chruthú chun sonraí Amazon a scrape

Chun sonraí ó Amazon a scríobadh go rathúil, is féidir leat an t -algartam struchtúrtha atá leagtha amach thíos a leanúint. Cinntíonn an modh seo go bhfaigheann tú an fhaisnéis is gá go héifeachtach agus go cruinn.

Runga 1: Iarratais HTTP a sheoladh chuig Leathanaigh Táirge Amazon:

  • Bain úsáid as an leabharlann iarratais chun HTTP a thionscnamh iarratais a dhíríonn ar leathanaigh táirge Amazon;
  • Gabh an t -ábhar RAW HTML ón bhfreagra HTTP chun ullmhú le haghaidh parsála.

Runga 2: An t -ábhar HTML a pharsáil:

  • An leabharlann LXML a fhostú chun an t -ábhar RAW HTML a fuarthas a pharsáil;
  • Déan anailís ar an HTML chun na pointí sonraí sonracha is mian leat a bhaint amach a aimsiú;
  • Cuir ceisteanna XPath i bhfeidhm chun na pointí sonraí seo a dhíriú agus a bhaint go beacht ón struchtúr HTML.

Runga 3: Na sonraí a stóráil:

  • Tar éis na sonraí riachtanacha a bhaint amach, lean ar aghaidh chun é a shábháil i bhformáidí inrochtana mar CSV nó JSON, a éascaíonn anailís agus comhtháthú éasca le feidhmchláir eile.

Bloic bhóthair fhéideartha a láimhseáil

Fostaíonn Amazon roinnt beart chun bac a chur ar iarrachtaí scríobtha, lena n -áirítear teorainneacha luais nasctha, comhtháthú Captcha, agus blocáil IP. Is féidir le húsáideoirí frithbhearta a ghlacadh chun dul timpeall ar na constaicí seo, mar shampla seachvótálaithe ardchaighdeáin a úsáid.

Maidir le gníomhaíochtaí scrapála fairsinge, is féidir teicnící ardleibhéil Python a úsáid chun méideanna suntasacha sonraí táirgí a bhaint. I measc na dteicnící seo tá líonta ceanntásca agus méarloirg TLS, a chuidíonn le braite a sheachaint agus eastóscadh sonraí rathúla a chinntiú.

Mínítear na céimeanna seo sna rannóga atá le teacht den alt ina bhfeicfidh sé a chur i bhfeidhm praiticiúil ag baint úsáide as Python 3.12.2

Réamhriachtanais

Chun tionscadal scríobtha gréasáin a thionscnamh, tosóimid trí bhunscraper a bhunú ag baint úsáide as leabharlann LXML le haghaidh parsáil HTML agus an leabharlann iarratais chun iarratais HTTP atá dírithe ar fhreastalaí gréasáin Amazon a bhainistiú.

Beidh ár bhfócas ar fhaisnéis riachtanach a bhaint amach mar ainmneacha táirgí, praghsanna, agus rátálacha ó leathanaigh táirge Amazon. Taispeánfaimid teicnící freisin chun HTML a pharsáil go héifeachtach agus chun iarratais a bhainistiú, ag cinntiú go mbainfí sonraí beacht agus eagraithe sonraí.

Chun spleáchais tionscadail a choinneáil agus coinbhleachtaí a sheachaint, moltar timpeallacht fhíorúil ar leith a chruthú don iarracht scríobtha gréasáin seo. Moltar uirlisí cosúil le “Venv” nó “Pyenv” a úsáid chun timpeallachtaí fíorúla a bhunú.

Suiteáil leabharlanna tríú páirtí

Beidh na leabharlanna Python tríú páirtí seo a leanas de dhíth ort:

1. requests

Úsáidtear é chun iarratais HTTP a sheoladh agus ábhar gréasáin a aisghabháil. Is minic a úsáidtear é le haghaidh scríobadh gréasáin agus idirghníomhú le APIs gréasáin.

Suiteáil:

 pip install requests

2. lxml

Leabharlann chun doiciméid XML agus HTML a pharsáil agus a láimhseáil. Is minic a úsáidtear é chun scríobadh gréasáin agus ag obair le sonraí struchtúrtha ó leathanaigh ghréasáin.

Suiteáil:

 pip install lxml

Leabharlanna riachtanacha a iompórtáil

Anseo ní mór dúinn na leabharlanna riachtanacha a allmhairiú a theastaíonn chun ár scraper a rith. Lena n -áirítear leabharlann iarratais chun iarratais HTTP a láimhseáil, leabharlann CSV chun oibriú comhad CSV a láimhseáil, an leabharlann randamach chun luachanna randamacha a ghiniúint agus roghanna randamacha a dhéanamh, leabharlann LXML chun an t -ábhar HTML RAW a pharsáil, agus dict agus liosta do chineáil.

 import requests
import csv
import random
from lxml import html
from typing import Dict, List

Ionchuir léitheoireachta ón gcomhad CSV

Léann an snippet cód seo a leanas comhad CSV darb ainm Amazon_Product_urls.csv áit a bhfuil URL leathanach táirge Amazon i ngach líne. Athraíonn an cód thar na sraitheanna, ag baint na n -URLanna as gach sraith agus ag cur iad chuig liosta ar a dtugtar URL.

 with open('amazon_product_urls.csv', 'r') as file:
    reader = csv.DictReader(file)
    for row in reader:
        urls.append(row['url'])

Http ceanntásca agus seachvótálaithe a iarraidh

Tá ról tábhachtach ag ceanntásca a iarraidh in iarratais HTTP, ag soláthar faisnéise casta cliant agus a iarrann. Agus é ag scríobadh, tá sé tábhachtach na teidil údaraithe úsáideora a chóipeáil chun an t -eolas a theastaíonn uait a sheachaint go héasca. Trí cheanntásca a úsáidtear go coitianta a athmhúnlú, is féidir le scríobairí teicnící braite a sheachaint, ag cinntiú go mbaintear sonraí go comhsheasmhach agus caighdeáin eiticiúla a choinneáil ag an am céanna.

Feidhmíonn seachvótálaithe mar idirghabhálaithe i scríobadh gréasáin, ag magadh seoladh IP an scraper chun cosc ​​a chur ar bhrath agus ar bhlocáil freastalaí. Ligeann seachvótálaí rothlach duit gach iarratas a sheoladh le seoladh IP nua ag seachaint bloic fhéideartha.

Cód chun ceanntásca iarratais agus seachfhreastalaithe a chomhtháthú le húdarú seoladh IP:

 headers = {
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
    'accept-language': 'en-IN,en;q=0.9',
    'dnt': '1',
    'sec-ch-ua': '"Google Chrome";v="123", "Not:A-Brand";v="8", "Chromium";v="123"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
    'sec-fetch-dest': 'document',
    'sec-fetch-mode': 'navigate',
    'sec-fetch-site': 'same-origin',
    'sec-fetch-user': '?1',
    'upgrade-insecure-requests': '1',
   }
proxies = {'http': '', 'https': ''}

Uainíocht úsáideora

Anseo, cruthóimid liosta de bhailiúcháin ghníomhaire úsáideora, óna roghnófar gníomhaire úsáideora randamach as gach iarratas. Is féidir le meicníocht uainíochta header a chur i bhfeidhm, amhail an gníomhaire úsáideora a rothlú tar éis gach iarratais, cabhrú le tuilleadh cabhair a fháil chun bearta braite bot a sheachaint.

 useragents = [
        "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4591.54 Safari/537.36",
        "Mozilla/5.0 (Windows NT 7_0_2; Win64; x64) AppleWebKit/541.38 (KHTML, like Gecko) Chrome/105.0.1585 Safari/537.36",
        "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36",
        "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.7863.44 Safari/537.36"
    ]
headers['user-agent'] = random.choice(useragnets)

Iarrataí HTTP a dhéanamh ar leathanach táirge Amazon mar aon le ceanntásca agus seachvótálaí

Seolann sé iarratas HTTP Get chuig URL sonraithe le ceanntásca saincheaptha, tréimhse ama de 30 soicind, agus seachfhreastalaí sonraithe don iarraidh.

response = requests.get(url=url, headers=headers, proxies=proxies, timeout=30)

Xpath/roghnóirí na bpointí sonraí riachtanacha a aithint

Pointí Sonraí Riachtanacha: Teideal, Praghas, agus Rátálacha. Anois, déanaimis iniúchadh agus sainaithint ar an XPath comhfhreagrach do na heilimintí a thaispeántar sna scáileáin scáileáin mar aon lena bpointí sonraí faoi seach.

Taispeánann an seat scáileáin thíos gné "Cigireacht" Chrome DevTools á úsáid chun an XPath `//span[@id="productTitle"]/text()` a aimsiú chun teideal an táirge a bhaint ó leathanach táirge Amazon.

1.png

Taispeánann an seat scáileáin seo a leanas an XPath `//div[@id="corePrice_feature_div"]/div/div/span/span/text()` á aimsiú chun praghas an táirge a bhaint ó leathanach táirge Amazon.

2.png

Taispeánann an seat scáileáin an XPath `//span[@id="acrPopover"]/@title` á aimsiú chun rátálacha an táirge a bhaint ó leathanach táirge Amazon.

3.png

Cruthaigh foclóir a sholáthraíonn abairtí XPath chun faisnéis shonrach a bhaint as leathanach gréasáin: teideal, rátálacha, agus praghas táirge.

xpath_queries = {'title': '//span[@id="productTitle"]/text()', 'ratings': '//span[@id="acrPopover"]/@title', 'price': '//span[@class="a-offscreen"]/text()'}

Ag cruthú parsálaí LXML ón bhfreagra HTML

Déanann an cód thíos an t-ábhar HTML a fhaightear ón iarraidh GET chuig Amazon Server a pharsáil isteach i bhformáid struchtúrtha cosúil le crann, rud a cheadaíonn nascleanúint agus ionramháil níos éasca dá ghnéithe agus dá thréithe.

tree = html.fromstring(response.text)

Na sonraí riachtanacha a bhaint amach

Sleachtann an cód seo a leanas sonraí ón gcrann HTML parsáilte ag baint úsáide as ceist XPath agus sannann sé é do fhoclóir le eochair shonraithe. Úsáidtear stiall () chun spásanna bán a bhaint ag an tús agus ag an deireadh más ann dó. Aisghabhann sé an chéad toradh ar cheist XPath agus stórálann sé é faoin eochair a thugtar sa bhfoclóir Extracted_Data.

data = tree.xpath(xpath_query)[0].strip()
extracted_data[key] = data

Na sonraí eastósctha a shábháil i CSV

Scríobhann an cód seo a leanas sonraí ón bhFoclóir Extracted_Data go comhad CSV ar a dtugtar Product_Data.csv. Cinntigh nach bhfuil an líne header scríofa ach amháin má tá an comhad folamh. Mura bhfuil an comhad folamh, cuireann sé na sonraí mar shraith bhreise leis an gcomhad CSV. Ligeann an fheidhm seo don chomhad CSV a nuashonrú go leanúnach le sonraí nua eastósctha gan an téacs atá ann cheana a scríobh ró -scríobh.

 csv_file_path = 'product_data.csv'
fieldnames = ['title', 'ratings', 'price']
with open(csv_file_path, 'a', newline='') as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    if csvfile.tell() == 0:
        writer.writeheader()
    writer.writerow(extracted_data)

Cód cur i bhfeidhm na gcód

Féach ar ár gcód iomlán le do thoil, rud a chabhróidh leat tosú go tapa. Tá an cód struchtúrtha agus doiciméadaithe go maith, rud a fhágann go bhfuil sé neamhdhíobhálach do thosaitheoirí. Chun an cód seo a fhorghníomhú, ní mór don úsáideoir comhad CSV a bheith aige ar a dtugtar "Amazon_Product_urls" san eolaire céanna. Anseo thíos tá struchtúr an chomhaid CSV:

4.png

import requests
import csv
import random
from lxml import html
from typing import Dict, List


def send_requests(
    url: str, headers: Dict[str, str], proxies: Dict[str, str]
) -> List[Dict[str, str]]:
    """
    Seolann HTTP iarratais ar URLanna iolracha le ceanntásca agus seachvótálaithe.

    Args:
        urls (str): URL chun iarratais a sheoladh chuig.
        headers (Dict[str, str]): Foclóir ina bhfuil ceanntásca iarratais.
        proxies (Dict[str, str]): Foclóir ina bhfuil suíomhanna seachvótála.

    Returns:
        Response: Cuspóir Freagartha ina bhfuil sonraí freagartha do gach URL.
    """
    try:
        response = requests.get(url, headers=headers, proxies=proxies, timeout=30)
       # Bailíochtú freagartha
        if len(response.text)> 10000:
            return response
        return None
    except Exception as e:
        print(f"Error occurred while fetching URL {url}: {str(e)}")


def extract_data_from_html(
    response, xpath_queries: Dict[str, str]
) -> Dict[str, List[str]]:
    """
    Sleachta sonraí ó ábhar HTML ag baint úsáide as ceisteanna XPath.

    Args:
        response (Response): Réad freagartha.
        xpath_queries (Dict[str, str]): Foclóir ina bhfuil ceisteanna XPath le haghaidh eastóscadh sonraí.

    Returns:
        Dict[str, str]: Foclóir ina bhfuil sonraí eastósctha do gach ceist XPath.
    """
    extracted_data = {}
    tree = html.fromstring(response.text)
    for key, xpath_query in xpath_queries.items():
        data = tree.xpath(xpath_query)[0].strip()
        extracted_data[key] = data
    return extracted_data


def save_to_csv(extracted_data: Dict[str, any]):
    """
   Sábhálann foclóir mar a chéile i gcomhad CSV ag úsáid DictWriter.

    Args:
        extracted_data (Dict[str, any]): Foclóir a léiríonn sraith sonraí.
    """
    csv_file_path = "product_data.csv"
    fieldnames = ["title", "ratings", "price"]
    with open(csv_file_path, "a", newline="") as csvfile:
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
        if csvfile.tell() == 0:
            writer.writeheader()  # Scríobh ceanntásc ach amháin má tá an comhad folamh
        writer.writerow(extracted_data)


def main():
    # URLanna a léamh ó chomhad CSV
    urls = []
    with open("amazon_product_urls.csv", "r") as file:
        reader = csv.DictReader(file)
        for row in reader:
            urls.append(row["url"])

    # Ceanntásca Iarratais a Shainiú
    headers = {
        "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
        "accept-language": "en-IN,en;q=0.9",
        "dnt": "1",
        "sec-ch-ua": '"Google Chrome";v="123", "Not:A-Brand";v="8", "Chromium";v="123"',
        "sec-ch-ua-mobile": "?0",
        "sec-ch-ua-platform": '"Windows"',
        "sec-fetch-dest": "document",
        "sec-fetch-mode": "navigate",
        "sec-fetch-site": "same-origin",
        "sec-fetch-user": "?1",
        "upgrade-insecure-requests": "1",
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
    }

    useragents = [
        "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4591.54 Safari/537.36",
        "Mozilla/5.0 (Windows NT 7_0_2; Win64; x64) AppleWebKit/541.38 (KHTML, like Gecko) Chrome/105.0.1585 Safari/537.36",
        "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36",
        "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.7863.44 Safari/537.36"
        ]

    # Proxies a shainiú
    proxies = {"http": "IP:Port", "https": "IP:Port"}

    # Iarratais a sheoladh chuig URLanna
    for url in urls:
        # Uainíocht úsáideora i gceanntásca
        headers["user-agent"] = random.choice(useragnets)
        response = send_requests(url, headers, proxies)
        if response:
           # Sonraí a bhaint as ábhar HTML
            xpath_queries = {
                "title": '//span[@id="productTitle"]/text()',
                "ratings": '//span[@id="acrPopover"]/@title',
                "price": '//span[@class="a-offscreen"]/text()',
            }
            extracted_data = extract_data_from_html(response, xpath_queries)

            # Sonraí eastósctha a shábháil ar chomhad CSV
            save_to_csv(extracted_data)


if __name__ == "__main__":
    main()

Moltaí seachfhreastalaí chun Amazon a scríobadh trí Python

Tá réitigh seachfhreastalaí éagsúla, lena n -áirítear Datacenter IPv4, Rothlach Mobile, ISP, agus seachvótálaithe cónaitheacha, ar fáil le haghaidh eastóscadh sonraí gan bhriseadh. Úsáidtear loighic uainíochta chuí agus gníomhairí úsáideoirí chun fíor-iompar úsáideora a ionsamhlú, agus tacaíonn seachvótálaithe speisialta le scríobadh mórscála le uainíocht inmheánach agus linnte IP fairsinge. Tá sé ríthábhachtach tuiscint a fháil ar na buntáistí agus na míbhuntáistí a bhaineann le gach rogha seachfhreastalaí maidir le heasnamh sonraí gan bhriseadh.

Tíopáil Suntas Míbhuntáistí
Proxies Datacenter

Luas agus feidhmíocht ard.

Éifeachtach ó thaobh costais de.

Go hidéalach le haghaidh iarratais mhóra toirte.

Is féidir é a bhrath go héasca agus a liostáil.

Gan a bheith iontaofa i gcoinne córais frith-scrapála nó frith-bot.

Seachvótálaithe cónaitheacha

Dlisteanacht ard mar gheall ar fíor -IPanna cónaithe.

Infhaighteacht dhomhanda IP domhanda le haghaidh scríobadh sonraí a bhaineann go sonrach le suíomh.

Cumais uainíochta IP.

Níos daoire ná seachvótálaithe Datacenter.

Seachvótálaithe soghluaiste

IPanna an -dlisteanacha.

Éifeachtach chun bloic agus leideanna fíoraithe a sheachaint.

Níos daoire ná cineálacha seachvótála eile.

Níos moille ná seachvótálaithe datacenter mar gheall ar spleáchas líonra soghluaiste.

Proxies ISP

IPanna an-iontaofa.

Níos tapúla ná IPanna cónaithe.

Infhaighteacht IP theoranta.

Níl uainíocht IP ar fáil.

Is éard atá i gceist le sonraí a scríobadh ó Amazon ná ullmhúchán cúramach chun meicníochtaí frith-scrapála an ardáin a nascleanúint go héifeachtach. Trí úsáid a bhaint as seachfhreastalaithe mar aon le Python, cuirtear ar chumas próiseála sonraí éifeachtúla agus eastóscadh spriocdhírithe ar an bhfaisnéis riachtanach. Nuair a roghnaíonn tú seachvótálaithe le haghaidh scríobadh gréasáin, tá sé ríthábhachtach tosca amhail feidhmíocht, costas, iontaofacht an fhreastalaí, agus riachtanais shonracha do thionscadail a bhreithniú. Is féidir le seachvótálaithe dinimiciúla a úsáid agus straitéisí a chur i bhfeidhm chun dul i ngleic le bearta slándála an baol go gcuirfear bac air agus feabhas a chur ar éifeachtúlacht fhoriomlán an phróisis scríobtha.

Tuairimí:

0 tuairimí