Is féidir le sonraí a scríobadh ó Yelp léargas luachmhar a sholáthar ar bhialanna áitiúla, lena n -áirítear sonraí mar ainm, URL, ealaín, agus rátálacha. Ag baint úsáide as na hiarratais agus na leabharlanna LXML Python, taispeánfaidh an rang teagaisc seo conas torthaí cuardaigh Yelp a scrape. Clúdófar roinnt teicnící lena n -áirítear proxies a úsáid, ceanntásca a láimhseáil agus sonraí a bhaint le XPath.
Sula dtosaíonn tú ar an bpróiseas scríobtha, cinntigh go bhfuil python suiteáilte agat agus na leabharlanna riachtanacha:
pip install requests
pip install lxml
Cuideoidh na leabharlanna seo linn iarratais HTTP a sheoladh chuig Yelp, an t -ábhar HTML a pharsáil, agus na sonraí a theastaíonn uainn a bhaint.
Ar an gcéad dul síos, ní mór dúinn iarratas GET a sheoladh chuig an leathanach Torthaí Cuardaigh Yelp chun an t -ábhar HTML a fháil. Seo conas é a dhéanamh:
import requests
# URL Leathanach Cuardaigh Yelp
url = "https://www.yelp.com/search?find_desc=restaurants&find_loc=San+Francisco%2C+CA"
# Seol iarratas GET chun an t -ábhar HTML a fháil
response = requests.get(url)
# Seiceáil an raibh an t -iarratas rathúil
if response.status_code == 200:
print("Successfully fetched the page content")
else:
print("Failed to retrieve the page content")
Agus iarratais á ndéanamh agat ar shuíomh gréasáin, tá sé riachtanach na ceanntásca cuí HTTP a chur san áireamh. Is féidir le ceanntásca meiteashonraí a bheith ann faoin iarraidh, mar shampla an gníomhaire úsáideora, a aithníonn an brabhsálaí nó an uirlis a dhéanann an t -iarratas. Is féidir leis na ceanntásca seo a chur san áireamh cabhrú le blocáil nó le sceitheadh a sheachaint ag an Láithreán Gréasáin Sprioc.
Seo an chaoi ar féidir leat ceanntásca a chur ar bun:
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',
'cache-control': 'no-cache',
'dnt': '1',
'pragma': 'no-cache',
'priority': 'u=0, i',
'sec-ch-ua': '"Not)A;Brand";v="99", "Google Chrome";v="127", "Chromium";v="127"',
'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',
'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36',
}
response = requests.get(url, headers=headers)
Agus méid mór leathanach á scríobadh agat, tá baol ann go gcuirfidh an sprioc -láithreán bac ar do sheoladh IP. Chun é seo a chosc, moltar úsáid a bhaint as seachfhreastalaithe. Maidir leis an treoir seo, tá sé inmholta freastalaithe seachfhreastalaí dinimiciúla a úsáid a bhfuil uainíocht uathoibríoch iontu. Sa tslí seo, ní gá duit ach na socruithe seachfhreastalaí a chur ar bun uair amháin, agus cabhróidh an uainíocht le rochtain a choinneáil tríd an seoladh IP a athrú go tréimhsiúil, ag laghdú an dóchúlacht go gcuirfear bac air.
proxies = {
'http': 'http://username:password@proxy-server:port',
'https': 'https://username:password@proxy-server:port'
}
response = requests.get(url, headers=headers, proxies=proxies)
Nuair a bheidh an t -ábhar HTML againn, is é an chéad chéim eile é a pharsáil agus na sonraí ábhartha a bhaint. Bainfimid úsáid as an leabharlann LXML chun na críche seo.
from lxml import html
# Parse an t -ábhar HTML ag úsáid LXML
parser = html.fromstring(response.content)
Ní mór dúinn díriú ar na liostaí bialainne aonair ar an leathanach Torthaí Cuardaigh. Is féidir na heilimintí seo a aithint ag baint úsáide as abairtí XPath. I gcás Yelp, is iondúil go ndéantar na liostaí a fhilleadh i ngné div le tréith shonrach sonraí sonraí.
# Eilimintí bialainne aonair a bhaint
elements = parser.xpath('//div[@data-testid="serp-ia-card"]')[2:-1]
Is uirlis chumhachtach é XPath chun nóid a nascleanúint agus a roghnú ó dhoiciméad HTML. Sa rang teagaisc seo, bainfimid úsáid as abairtí XPath chun ainm na bialainne, URL, ealaín, agus rátáil a bhaint as gach gné bialainne.
Seo iad na XPaths sonracha do gach pointe sonraí:
Anois go bhfuil an t -ábhar HTML againn agus go bhfuil blocáil IP ionchasach againn, is féidir linn na sonraí riachtanacha a bhaint as gach liostáil bialainne.
restaurants_data = []
# Iterate thar gach gné bialainne
for element in elements:
# Sliocht ainm na bialainne
name = element.xpath('.//div[@class="businessName__09f24__HG_pC y-css-ohs7lg"]/div/h3/a/text()')[0]
# Sliocht URL na Bialann
url = element.xpath('.//div[@class="businessName__09f24__HG_pC y-css-ohs7lg"]/div/h3/a/@href')[0]
# Sliocht na cuisines
cuisines = element.xpath('.//div[@class="priceCategory__09f24___4Wsg iaPriceCategory__09f24__x9YrM y-css-2hdccn"]/div/div/div/a/button/span/text()')
# Sliocht an rátáil
rating = element.xpath('.//div[@class="y-css-9tnml4"]/@aria-label')[0]
# Cruthaigh foclóir chun na sonraí a stóráil
restaurant_info = {
"name": name,
"url": url,
"cuisines": cuisines,
"rating": rating
}
# Cuir an t -eolas bialainne leis an liosta
restaurants_data.append(restaurant_info)
Tar éis na sonraí a bhaint amach, ní mór dúinn é a shábháil i bhformáid struchtúrtha. Is formáid a úsáidtear go forleathan é JSON chun na críche seo.
import json
# Sábháil na sonraí chuig comhad JSON
with open('yelp_restaurants.json', 'w') as f:
json.dump(restaurants_data, f, indent=4)
print("Data extraction complete. Saved to yelp_restaurants.json")
import requests
from lxml import html
import json
# URL Leathanach Cuardaigh Yelp
url = "https://www.yelp.com/search?find_desc=restaurants&find_loc=San+Francisco%2C+CA"
# Ceanntásca a chur ar bun chun aithris a dhéanamh ar iarratas brabhsálaí
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Accept-Language': 'en-US,en;q=0.5'
}
# Seachvótálaithe a bhunú más gá
proxies = {
'http': 'http://username:password@proxy-server:port',
'https': 'https://username:password@proxy-server:port'
}
# Seol iarratas GET chun an t -ábhar HTML a fháil
response = requests.get(url, headers=headers, proxies=proxies)
# Seiceáil an raibh an t -iarratas rathúil
if response.status_code == 200:
print("Successfully fetched the page content")
else:
print("Failed to retrieve the page content")
# Parse an t -ábhar HTML ag úsáid LXML
parser = html.fromstring(response.content)
# Eilimintí bialainne aonair a bhaint
elements = parser.xpath('//div[@data-testid="serp-ia-card"]')[2:-1]
# Tús a chur le liosta chun na sonraí eastósctha a choinneáil
restaurants_data = []
# Iterate thar gach gné bialainne
for element in elements:
# Sliocht ainm na bialainne
name = element.xpath('.//div[@class="businessName__09f24__HG_pC y-css-ohs7lg"]/div/h3/a/text()')[0]
# Sliocht URL na Bialann
url = element.xpath('.//div[@class="businessName__09f24__HG_pC y-css-ohs7lg"]/div/h3/a/@href')[0]
# Sliocht na cuisines
cuisines = element.xpath('.//div[@class="priceCategory__09f24___4Wsg iaPriceCategory__09f24__x9YrM y-css-2hdccn"]/div/div/div/a/button/span/text()')
# Sliocht an rátáil
rating = element.xpath('.//div[@class="y-css-9tnml4"]/@aria-label')[0]
# Cruthaigh foclóir chun na sonraí a stóráil
restaurant_info = {
"name": name,
"url": url,
"cuisines": cuisines,
"rating": rating
}
# Cuir an t -eolas bialainne leis an liosta
restaurants_data.append(restaurant_info)
# Sábháil na sonraí chuig comhad JSON
with open('yelp_restaurants.json', 'w') as f:
json.dump(restaurants_data, f, indent=4)
print("Data extraction complete. Saved to yelp_restaurants.json")
Tá sé ríthábhachtach d'úsáideoirí ceanntásca HTTP a chumrú i gceart agus úsáid a bhaint as seachvótálaithe chun dul timpeall ar shrianta agus blocáil a sheachaint. Le haghaidh taithí scríobtha optamaithe agus níos sábháilte, smaoinigh ar uathoibriú IP a uathoibriú. Is féidir le seachfhreastalaithe dinimiciúla cónaithe nó soghluaiste a fhostú an próiseas seo a fheabhsú go mór, rud a laghdófar an dóchúlacht go mbraithfear agus go gcuirfí bac air.
Tuairimí: 0