Соскреб в Интернете цены на рейсы Google - PullRequest
4 голосов
/ 29 марта 2019

Я пытаюсь научиться пользоваться библиотекой python BeautifulSoup, я хотел бы, например, вычеркнуть цену билета на рейсах Google.Поэтому я подключился к Google Авиабилеты, например по этой ссылке , и я хочу получить самую дешевую цену на рейс.

Так что я бы получил значение внутри div с этим классом "gws-flight-results__itinerary-price "(как на рисунке).

figure example

Вот простой код, который я написал:

from bs4 import BeautifulSoup
import urllib.request

url = 'https://www.google.com/flights?hl=it#flt=/m/07_pf./m/05qtj.2019-04-27;c:EUR;e:1;sd:1;t:f;tt:o'
page = urllib.request.urlopen(url)
soup = BeautifulSoup(page, 'html.parser')
div = soup.find('div', attrs={'class': 'gws-flights-results__itinerary-price'})

Но полученный div имеетclass NoneType.

Я также пытаюсь использовать

find_all('div') 

, но во всем div, который я нашел таким образом, не было интересующего меня div. Может ли кто-нибудь мне помочь?

Ответы [ 3 ]

5 голосов
/ 29 марта 2019

Похоже, что JavaScript должен работать, поэтому используйте метод, как селен

from selenium import webdriver
url = 'https://www.google.com/flights?hl=it#flt=/m/07_pf./m/05qtj.2019-04-27;c:EUR;e:1;sd:1;t:f;tt:o'
driver = webdriver.Chrome()
driver.get(url)
print(driver.find_element_by_css_selector('.gws-flights-results__cheapest-price').text)
driver.quit()
2 голосов
/ 29 марта 2019

Здорово, что вы изучаете утилизацию в Интернете! В результате вы получаете NoneType, потому что веб-сайт, который вы просматриваете, загружает контент динамически. Когда библиотека запросов выбирает URL, она содержит только javascript. и div с этим классом "gws-flight-results__itinerary-price" еще не создан! Таким образом, это не будет возможно из-за подхода, который вы используете для очистки этого сайта.

Однако вы можете использовать другие методы, такие как извлечение страницы с помощью таких инструментов, как селен или всплеск, для визуализации JavaScript, а затем проанализировать содержимое.

1 голос
/ 29 марта 2019

BeautifulSoup - отличный инструмент для извлечения части HTML или XML, но здесь похоже, что вам нужно только получить URL-адрес другого GET-запроса для объекта JSON.

(я некомпьютер сейчас, может обновить пример завтра.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...