Я пытаюсь создать простой веб-скребок для извлечения информации о полете из студенческой вселенной.
Я использовал селен для навигации по веб-страницам, чтобы получить информацию о полете для желаемого местоположения и даты.Для меня нет проблем, чтобы попасть на нужную страницу со всей информацией.Однако у меня возникают трудности при извлечении информации с веб-страницы.Я использовал xpath, чтобы найти те элементы, которые содержат требуемую информацию, но извлечение информации будет неудачным, если я не прокручиваю вручную вверх и вниз веб-страницу.Похоже, это как-то связано с подкадрами, встроенными в сайт.Я попытался перебрать весь iframe, чтобы увидеть, получаю ли я информацию с помощью команды driver.switch_to.frame (), но проблема остается.
Было бы замечательно, если бы кто-нибудь мог предложить некоторую помощь относительно того, как собирать информацию с таких веб-сайтов.Проблема не может быть вызвана наличием подрамника.Любой вклад приветствуется.Код, который я использовал для извлечения информации о рейсах, показан ниже, тег статьи содержит всю информацию (имя перевозчика, время отправления, время прибытия и т. Д.).Что я сделал в первую очередь, чтобы найти этот элемент.
def parseprice(driver):
driver.maximize_window()
parser = lxml.html.fromstring(driver.page_source,driver.current_url)
flights=parser.xpath('//article[@class="itin activeCheck"]')
driver.quit()
carriername=flights[0].xpath('//p[@id="airlineName0"]/text()')
duration=flights[0].xpath('//strong[@id="duration0"]/text()')
depttime=flights[0].xpath('//span[@id="departureTime0"]/text()')
arrtime=flights[0].xpath('//span[@id="arrivalTime0"]/text()')
price=flights[0].xpath('//p[@ng-click="pricePoint()"]//text()')
stops=flights[0].xpath('//p[@id="stops0"]//text()')
stoplis=list()
for st in stops:
res1=re.search('^(\d)+\D*',st)
if res1 is not None:
stoplis.append(int(res1.group(1)))
now=datetime.datetime.now()
now=now.timetuple()
for i in range(20):
yield{'current time':str(now[1])+'/'+str(now[2])+'/'+str(now[0]),'carrier':carriername[i],'duration':duration[i],'price':price[i],'numstops':stoplis[i],'departure_time':depttime[i],'arrival_time':arrtime[i]}