Получение пустого результата от Web Scrape с использованием XPath - PullRequest
0 голосов
/ 21 мая 2019

Я использую следующий код для очистки цены билета на вкладке "Самый дешевый". Однако я просто получаю "[]" в результате.

Может кто-нибудь проверить, что мой код и XPath верны? Я попытался использовать как относительный ("// span [@ class = 'title price']"), так и абсолютный XPath. Кроме того, я должен отметить, что я использую сервис, который отображает страницу перед использованием «Запрос». Рендеринг не должен быть проблемой.

page = requests.get('https://www.momondo.com/flight-search/PHL-VCE/2019-06-19-flexible/2019-06-25-flexible?sort=price_a')
sleep(5)
tree = html.fromstring(page.content)
price = tree.xpath('/html[1]/body[1]/div[1]/div[1]/div[3]/div[1]/div[1]/div[3]/div[1]/div[2]/div[1]/div[2]/div[4]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/a[1]/div[1]/div[2]/span[1]')
print(price)

1 Ответ

0 голосов
/ 22 мая 2019

Данные веб-страниц отображаются с помощью сценариев Java, поэтому request.get() не может вернуть ожидаемое вами значение. Используйте селен webdriver и BeautifulSoup для получения значений.

 from selenium import webdriver
 from bs4 import BeautifulSoup
 import re
 driver=webdriver.Chrome()
 driver.get("https://www.momondo.com/flight-search/PHL-VCE/2019-06-19-flexible/2019-06-25-flexible?sort=price_a&fs=flexdepart=~20190616;flexreturn=~20190622")
 soup=BeautifulSoup(driver.page_source,'html.parser')
 allprice=[price.text.replace('\xa0',' ') for price in soup.find_all('div',class_=re.compile('_A _r _s _v'))]
    print(allprice)
driver.quit()

Выход:

['1,280 USD', '1,185 USD', '1,156 USD', '1,205 USD', '1,278 USD', '1,747 USD', 'N/A', '1,461 USD', '1,374 USD', '1,311 USD', '1,509 USD', '1,516 USD', '1,561 USD', '3,310 USD', '1,256 USD', '1,077 USD', '1,146 USD', '1,186 USD', '1,202 USD', '1,397 USD', '1,391 USD', '1,342 USD', '1,167 USD', '1,113 USD', '1,157 USD', '1,149 USD', '1,488 USD', '1,355 USD', '1,235 USD', '1,055 USD', '1,136 USD', '1,114 USD', '1,190 USD', '1,376 USD', '1,258 USD', '1,422 USD', '1,301 USD', '1,117 USD', '1,114 USD', '1,154 USD', '1,212 USD', '1,596 USD', '1,422 USD', '1,429 USD', '1,231 USD', '1,114 USD', '1,164 USD', '1,186 USD', '1,271 USD']

Здесь вы найдете красивый суп суп нажмите здесь

...