Treoir maidir le Sonraí Walmart a Scrapáil le Python

Tuairimí: 0

Is bealach cumhachtach é scríobadh gréasáin chun sonraí a bhaint as láithreáin ghréasáin chun críocha éagsúla, amhail anailís, taighde, agus faisnéis i ngnó. Cabhraíonn an rang teagaisc seo leat faisnéis táirge Walmart a scrapáil i Python le fócas ar phríomhstraitéisí agus teicnící. Cuireann Walmart Scraping sampla i láthair inar féidir linn sonraí a fháil ar tháirgí mar ainm, praghas nó athbhreithnithe a fhaightear ar leathanaigh éagsúla faoi shuíomhanna Walmart.

Bainfidh an treoir seo úsáid as an leabharlann iarratais chun iarratais HTTP a dhéanamh agus ar leabharlann LXML chun ábhar HTML a pharsáil.

An timpeallacht a chur ar bun

Sula dtosaímid, cinntigh go bhfuil python suiteáilte agat ar do mheaisín. Is féidir leat na leabharlanna riachtanacha a shuiteáil ag úsáid PIP:

pip install requests
pip install  lxml
pip install urllib3

Ansin, déanaimis na leabharlanna riachtanacha a allmhairiú:

  • Iarrataí: Chun iarratais HTTP a dhéanamh chun leathanaigh ghréasáin a aisghabháil;
  • LXML: Chun ábhar HTML a pharsáil;
  • CSV: Chun na sonraí eastósctha a scríobh chuig comhad CSV;
  • Randamach: Chun proxies randamacha agus teaghráin ghníomhaire úsáideora a roghnú.
import requests
from lxml import html
import csv
import random
import urllib3
import ssl

Sainmhínigh URLanna Táirge

Liosta de URLanna táirge Walmart chun scrape a dhéanamh.

product_urls = [
    'link with https',
    'link with https',
    'link with https'
]

Teaghráin agus seachvótálaithe gníomhaire úsáideora

Chun suíomh gréasáin a scrapáil, tá sé an-tábhachtach go n-úsáideann duine na ceanntásca cearta, go háirithe an ceanntásc gníomhaire úsáideora, chun aithris a dhéanamh ar iarratas ó bhrabhsálaí iarbhír. Cad é atá níos mó, is féidir a sheachaint a bheith srianta mar gheall ar bhearta frith-bot a chuireann úinéirí an tsuímh i bhfeidhm ag baint úsáide as seachfhreastalaithe in-rothlaithe. Anseo thíos tá samplaí de teaghráin ghníomhaire úsáideoirí mar aon le cur síos ar conas seachfhreastalaithe a chomhtháthú a dteastaíonn údarú uathu bunaithe ar an seoladh IP.

user_agents = [
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
    'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
]

proxy = [
    '<ip>:<port>',
    '<ip>:<port>',
    '<ip>:<port>',
]

Ceanntásca le haghaidh Iarrataí

Socraigh ceanntásca chun iarratais ar bhrabhsálaí a aithris agus a bhrath a sheachaint.

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',
    'priority': 'u=0, i',
    'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Linux"',
    'sec-fetch-dest': 'document',
    'sec-fetch-mode': 'navigate',
    'sec-fetch-site': 'none',
    'sec-fetch-user': '?1',
    'upgrade-insecure-requests': '1',
}

Tús a chur le stóráil sonraí

Cruthaigh liosta folamh chun sonraí táirge a stóráil.

product_details = []

Oibríonn an próiseas áirimh do leathanaigh URL mar seo a leanas: I gcás gach leathanach URL, seoltar iarratas GET ag baint úsáide as gníomhaire úsáideora agus seachvótálaí a roghnaítear go randamach. Ar an bhfreagra HTML a fháil, déantar é a pharsáil chun sonraí a bhaint amach mar ainm an táirge, praghas, agus athbhreithnithe. Stóráiltear na sonraí eastósctha mar fhoclóir, a chuirtear i gceangal ina dhiaidh sin le liosta a cruthaíodh níos luaithe.

for url in product_urls:
   headers['user-agent'] = random.choice(user_agents)
   proxies = {
       'http': f'http://{random.choice(proxy)}',
       'https': f'http://{random.choice(proxy)}',
   }
   try:
       # Seol iarratas http Get chuig an URL
       response = requests.get(url=url, headers=headers, proxies=proxies, verify=False)
       print(response.status_code)
       response.raise_for_status()
   except requests.exceptions.RequestException as e:
       print(f'Error fetching data: {e}')

   # Parse an t -ábhar HTML ag úsáid LXML
   parser = html.fromstring(response.text)
   # Sliocht teideal táirge
   title = ''.join(parser.xpath('//h1[@id="main-title"]/text()'))
   # Sliocht Praghas Táirge
   price = ''.join(parser.xpath('//span[@itemprop="price"]/text()'))
   # Sonraí Athbhreithnithe Sliocht
   review_details = ''.join(parser.xpath('//div[@data-testid="reviews-and-ratings"]/div/span[@class="w_iUH7"]/text()'))

   # Stóráil Sonraí a bhaintear i bhfoclóir
   product_detail = {
       'title': title,
       'price': price,
       'review_details': review_details
   }
   # Cuir sonraí táirge ar an liosta
   product_details.append(product_detail)

Ceart:

1.png

Praghas a fháil amach:

2.png

Mionsonraí athbhreithnithe:

3.png

Sábháil sonraí chuig CSV

  • Oscail comhad nua CSV le haghaidh scríbhneoireachta.
  • Sainmhínigh na hainmneacha allamuigh (colúin) don chomhad CSV.
  • Cruthaigh CSV.Dictwriter Cuspóir chun foclóirí a scríobh chuig an gcomhad CSV.
  • Scríobh an tsraith ceanntásc chuig an gcomhad CSV.
  • Lúb tríd an liosta táirge_details agus scríobh gach foclóir táirge mar a chéile sa chomhad CSV.
  • with open('walmart_products.csv', 'w', newline='') as csvfile:
        fieldnames = ['title', 'price', 'review_details']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
        writer.writeheader()
        for product_detail in product_details:
            writer.writerow(product_detail)

    Cód iomlán:

    Seo an cód iomlán le tuairimí chun cabhrú leat é a thuiscint níos fearr:

    import requests
    from lxml import html
    import csv
    import random
    import urllib3
    import ssl
    
    ssl._create_default_https_context = ssl._create_stdlib_context
    urllib3.disable_warnings()
    
    
    # Liosta URLanna Táirgí le Scrape
    product_urls = [
       'link with https',
       'link with https',
       'link with https'
    ]
    
    # Teaghráin ghníomhaire úsáideora randamaithe le haghaidh anaithnideacht
    user_agents = [
       'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
       'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
       'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
    ]
    
    # Liosta seachfhreastalaí le haghaidh uainíochta IP
    proxy = [
        '<ip>:<port>',
        '<ip>:<port>',
        '<ip>:<port>',
    ]
    
    
    # Ceanntásca chun iarratais ar bhrabhsálaí a aithris
    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',
       'priority': 'u=0, i',
       'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
       'sec-ch-ua-mobile': '?0',
       'sec-ch-ua-platform': '"Linux"',
       'sec-fetch-dest': 'document',
       'sec-fetch-mode': 'navigate',
       'sec-fetch-site': 'none',
       'sec-fetch-user': '?1',
       'upgrade-insecure-requests': '1',
    }
    
    # Tús a chur le liosta folamh chun sonraí táirge a stóráil
    product_details = []
    
    # Lúb trí gach URL táirge
    for url in product_urls:
       headers['user-agent'] = random.choice(user_agents)
       proxies = {
           'http': f'http://{random.choice(proxy)}',
           'https': f'http://{random.choice(proxy)}',
       }
       try:
           # Seol iarratas http Get chuig an URL
           response = requests.get(url=url, headers=headers, proxies=proxies, verify=False)
           print(response.status_code)
           response.raise_for_status()
       except requests.exceptions.RequestException as e:
           print(f'Error fetching data: {e}')
    
       # Parse an t -ábhar HTML ag úsáid LXML
       parser = html.fromstring(response.text)
       # Sliocht teideal táirge
       title = ''.join(parser.xpath('//h1[@id="main-title"]/text()'))
       # Sliocht Praghas Táirge
       price = ''.join(parser.xpath('//span[@itemprop="price"]/text()'))
       # Sonraí Athbhreithnithe Sliocht
       review_details = ''.join(parser.xpath('//div[@data-testid="reviews-and-ratings"]/div/span[@class="w_iUH7"]/text()'))
    
       # Stóráil Sonraí a bhaintear i bhfoclóir
       product_detail = {
           'title': title,
           'price': price,
           'review_details': review_details
       }
       # Cuir sonraí táirge ar an liosta
       product_details.append(product_detail)
    
    # Scríobh na sonraí eastósctha chuig comhad CSV
    with open('walmart_products.csv', 'w', newline='') as csvfile:
       fieldnames = ['title', 'price', 'review_details']
       writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
       writer.writeheader()
       for product_detail in product_details:
           writer.writerow(product_detail)

    Léiríonn ár rang teagaisc conas úsáid a bhaint as leabharlanna Python chun sonraí táirge a scríobadh ó Walmart agus é a shábháil i bhformáid CSV le haghaidh anailíse ina dhiaidh sin. Tá an script a chuirtear ar fáil bunúsach agus cuireann sé bunús ar fáil ar féidir é a fheabhsú chun éifeachtúlacht an phróisis scríobtha a mhéadú. D'fhéadfadh feabhsuithe moilleanna randamacha a thabhairt isteach idir iarratais chun patrúin brabhsála daonna a aithris, gníomhaire úsáideora agus uainíocht seachfhreastalaí a chur i bhfeidhm chun braite a sheachaint, agus córas láimhseála earráide láidir a fhorbairt chun briseadh nó teipeanna scríobtha féideartha a bhainistiú.

    Tuairimí:

    0 tuairimí