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.
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ú:
import requests
from lxml import html
import csv
import random
import urllib3
import ssl
Liosta de URLanna táirge Walmart chun scrape a dhéanamh.
product_urls = [
'link with https',
'link with https',
'link with https'
]
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>',
]
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',
}
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:
Praghas a fháil amach:
Mionsonraí athbhreithnithe:
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)
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