Nuair a bhaineann sé le pleanáil taistil, le hanailís iomaíochta nó le críocha taighde, d'fhéadfadh léargas suntasach a bheith ar fhaisnéis a bhaineann le heitilt ó Google Flights. Seo rang teagaisc céim ar chéim ar conas faisnéis eitilte a scrape ag baint úsáide as leabharlanna Python, drámadóra agus LXML.
Sula dtéann tú isteach sa phróiseas scríobtha, cinntigh go bhfuil na leabharlanna Python riachtanacha suiteáilte agat:
pip install playwright
Pip install lxml
Chun drámadóir a úsáid, ní mór duit freisin na binaries brabhsálaí a shuiteáil:
playwright install chromium
Díreoimid ar shonraí eitilte a bhaint as leathanach Torthaí Cuardaigh Google Flights.
Chun sonraí ó Google Flights a scríobadh go héifeachtach, ní mór duit tú féin a chur ar an eolas faoi struchtúr HTML an láithreáin ghréasáin. Seo an chaoi ar féidir leat chrome devtools a úsáid chun eilimintí a iniúchadh agus na habairtí riachtanacha XPath a fháil chun scríobadh:
Liosta na n -abairtí XPath a úsáideadh:
From Location: //input[@aria-label="Where from?"]/@value
To Location: //input[@aria-label="Where to?"]/@value
Departure Date: //input[@placeholder="Departure"]/@value
Return Date: //input[@placeholder="Return"]/@value
Tabhair faoi deara: Filleann an XPath seo ilghnéithe, gach ceann acu ag teacht le heitilt aonair.
Flight Elements: //li[@class="pIav2d"]
Airway: .//div[@class="sSHqwe tPgKwe ogfYpf"]/span/text()
Details: .//span[@class="mv1WYe"]/@aria-label
Departure Time: .//span[@aria-describedby="gEvJbfc1583"]/span/text()
Arrival Time: .//span[@aria-describedby="gEvJbfc1584"]/span/text()
Travel Time: .//div[@class="gvkrdb AdWm1c tPgKwe ogfYpf"]/text()
Price: .//div[@class="YMlIz FpEdX"]/span/text()
Bainimid úsáid as drámadóir chun idirghníomhú leis an leathanach gréasáin agus a ábhar a bhaint. Cuidíonn an cur chuige seo le hábhar dinimiciúil a láimhseáil a d'fhéadfadh JavaScript a luchtú.
Cabhraíonn úsáid drámadóra le hábhar dinimiciúil atá luchtaithe ag JavaScript a láimhseáil. Seolann sé brabhsálaí gan dídean, téann sé chuig an URL, agus baintear ábhar an leathanaigh as.
from playwright.sync_api import sync_playwright
# URL don Leathanach Cuardaigh Google Flights
url = "https link"
def get_page_content(url):
"""Féachann sé ar ábhar HTML an URL a thugtar ag baint úsáide as drámadóir."""
with sync_playwright() as p:
browser = p.chromium.launch(headless=True) # Brabhsálaí a sheoladh i mód gan dídean
context = browser.new_context() # Comhthéacs Brabhsálaí Nua a chruthú
page = context.new_page() # Leathanach nua a oscailt
page.goto(url) # Téigh go dtí an URL sonraithe
content = page.content() # Faigh ábhar an leathanaigh
browser.close() # Dún an brabhsálaí
return content
# Faigh ábhar an leathanaigh
page_content = get_page_content(url)
Ansin, déanaimid an t -ábhar HTML den fhreagra a pharsáil ag úsáid LXML chun sonraí eitilte coitianta a bhaint amach mar dhátaí imeachta agus fillte.
from lxml import html
# Ag cruthú an pharsálaí
tree = html.fromstring(page_content)
# Sonraí eitilte coitianta a bhaint ag baint úsáide as xpath
from_location = tree.xpath('//input[@aria-label="Where from?"]/@value')[0] # Faigh an suíomh 'Ó'
to_location = tree.xpath('//input[@aria-label="Where to?"]/@value')[0] # Faigh an suíomh 'go'
departure_date = tree.xpath('//input[@placeholder="Departure"]/@value')[0] # Faigh an dáta imeachta
return_date = tree.xpath('//input[@placeholder="Return"]/@value')[0] # Faigh an dáta fillte
Ansin déanaimid an t -ábhar HTML a pharsáil chun faisnéis eitilte ar leith a bhaint amach bunaithe ar na habairtí XPath aitheanta.
# Tús a chur le liosta folamh chun sonraí eitilte a stóráil
flights = []
# Eilimintí eitilte a bhaint as an HTML parsáilte ag úsáid xpath
flight_elements = tree.xpath('//li[@class="pIav2d"]')
# Lúb trí gach eilimint eitilte agus sonraí sliocht
for flight in flight_elements:
# Sliocht ainm na haerlíne
airway = flight.xpath('.//div[@class="sSHqwe tPgKwe ogfYpf"]/span/text()')[0].strip()
# Sliocht Sonraí Eitilte mar Layovers
details = flight.xpath('.//span[@class="mv1WYe"]/@aria-label')[0]
# An t -am imeachta a bhaint amach
departure = flight.xpath('.//span[@jscontroller="cNtv4b"]/span/text()')[0].strip()
# Sliocht an t -am teachta
arrival = flight.xpath('.//span[@jscontroller="cNtv4b"]/span/text()')[1].strip()
# Sliocht an t -am taistil iomlán
travel_time = flight.xpath('.//div[@class="gvkrdb AdWm1c tPgKwe ogfYpf"]/text()')[0].strip()
# Sliocht praghas na heitilte
price = flight.xpath('.//div[@class="U3gSDe"]/div/div[2]/span/text()')[0].strip()
# Cuir na sonraí eastósctha ar an liosta eitiltí mar fhoclóir
flights.append({
'Airway': airway,
'Details': details,
'Departure': departure,
'Arrival': arrival,
'Travel Time': travel_time,
'Price': price,
'From': from_location,
'To': to_location,
'Departure Date': departure_date,
'Return Date': return_date
})
Mar fhocal scoir, bainimid úsáid as modúl CSV tógtha Python chun na sonraí eastósctha a shábháil i gcomhad CSV le haghaidh tuilleadh anailíse.
import csv
# Sainmhínigh cosán comhad CSV
csv_file = 'google_flights.csv'
# Sainmhínigh ainmneacha allamuigh CSV
fieldnames = ['Airway', 'Details', 'Departure', 'Arrival', 'Travel Time', 'Price', 'From', 'To', 'Departure Date', 'Return Date']
# Sonraí a scríobh chuig comhad CSV
with open(csv_file, mode='w', newline='', encoding='utf-8') as file:
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader()
for flight in flights:
writer.writerow(flight)
print(f"Data saved to {csv_file}")
from playwright.sync_api import sync_playwright
from lxml import html
import csv
# URL don Leathanach Cuardaigh Google Flights
url = "https link"
def get_page_content(url):
"""Féachann sé ar ábhar HTML an URL a thugtar ag baint úsáide as drámadóir."""
with sync_playwright() as p:
browser = p.chromium.launch(headless=False) # Brabhsálaí a sheoladh i mód ceannródaíoch
context = browser.new_context() # Comhthéacs Brabhsálaí Nua a chruthú
page = context.new_page() # Leathanach nua a oscailt
page.goto(url) # Téigh go dtí an URL sonraithe
page.wait_for_timeout(10000) # Fan ar feadh 10 soicind chun a chinntiú go n -ualaí an leathanach go hiomlán
content = page.content() # Faigh ábhar an leathanaigh
browser.close() # Dún an brabhsálaí
return content
#Faigh ábhar an leathanaigh
page_content = get_page_content(url)
# Parse an t -ábhar HTML ag úsáid LXML
tree = html.fromstring(page_content)
# Sonraí cuardaigh eitilte a bhaint
from_location = tree.xpath('//input[@aria-label="Where from?"]/@value')[0]
to_location = tree.xpath('//input[@aria-label="Where to?"]/@value')[0]
departure_date = tree.xpath('//input[@placeholder="Departure"]/@value')[0]
return_date = tree.xpath('//input[@placeholder="Return"]/@value')[0]
# Tús a chur le liosta chun sonraí eitilte a stóráil
flights = []
# Eilimintí eitilte a bhaint as an html parsáilte
flight_elements = tree.xpath('//li[@class="pIav2d"]')
for flight in flight_elements:
airway = flight.xpath('.//div[@class="sSHqwe tPgKwe ogfYpf"]/span/text()')[0].strip()
details = flight.xpath('.//span[@class="mv1WYe"]/@aria-label')[0]
departure = flight.xpath('.//span[@jscontroller="cNtv4b"]/span/text()')[0].strip()
arrival = flight.xpath('.//span[@jscontroller="cNtv4b"]/span/text()')[1].strip()
travel_time = flight.xpath('.//div[@class="gvkrdb AdWm1c tPgKwe ogfYpf"]/text()')[0].strip()
price = flight.xpath('.//div[@class="U3gSDe"]/div/div[2]/span/text()')[0].strip()
# Cuir sonraí eitilte ar an liosta
flights.append({
'Airway': airway,
'Details': details,
'Departure': departure,
'Arrival': arrival,
'Travel Time': travel_time,
'Price': price,
'From': from_location,
'To': to_location,
'Departure Date': departure_date,
'Return Date': return_date
})
# Sainmhínigh an cosán comhaid CSV
csv_file = 'google_flights.csv'
#Sainmhínigh ainmneacha allamuigh CSV
fieldnames = ['Airway', 'Details', 'Departure', 'Arrival', 'Travel Time', 'Price', 'From', 'To', 'Departure Date', 'Return Date']
# Scríobh na sonraí eitilte eastósctha chuig comhad CSV
with open(csv_file, mode='w', newline='', encoding='utf-8') as file:
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader() # Scríobh an tsraith ceanntásca
for flight in flights:
writer.writerow(flight) # Scríobh sonraí gach eitilte
print(f"Data saved to {csv_file}")
Chun an baol braite a laghdú agus sonraí á scríobadh, tá sé inmholta moilleanna a ionchorprú idir iarratais agus seachvótálaithe a úsáid. Cuidíonn cur i bhfeidhm moilleanna le hidirghníomhaíocht an duine a aithris, rud a chiallaíonn go bhfuil sé níos deacra do shuíomhanna gréasáin gníomhaíochtaí scríobtha uathoibrithe a bhrath. Maidir le roghnú seachfhreastalaí, moltar seachfhreastalaithe dinimiciúla cónaithe toisc go dtugann siad leibhéal ard iontaobhais agus is lú an seans go gcuirfear bac orthu mar gheall ar a nádúr dinimiciúil. Mar mhalairt air sin, is féidir leat úsáid a bhaint as linn de sheachvótálaithe ISP statach, a sholáthraíonn nasc cobhsaí agus tapa, ag cur le hiontaofacht do phróisis eastósctha sonraí. Cabhraíonn na straitéisí seo le bearta cosanta a sheachaint a úsáideann láithreáin ghréasáin chun róbónna scríobtha a aithint agus a bhlocáil.
Tuairimí: 0