网上搜刮谷歌航班价格

2024-04-29 05:39:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试学习使用python库BeautifulSoup,我想,比如,在googleflights上刮一个航班的价格。 所以我连接了Google航班,比如在this link,我想得到最便宜的航班价格。在

因此,我将使用这个类“gws-flights-results\uuu trinerary-price”获得div中的值(如图所示)。在

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具有类NoneType。在

我也试着

^{pr2}$

但是在我用这种方式找到的所有div中,没有我感兴趣的div。 有人能帮我吗?在


Tags: importdivurlrequestpage价格urllibprice
3条回答

这是伟大的,你正在学习网络刮削!结果得到NoneType的原因是因为你正在抓取的网站会动态加载内容。当请求库获取url时,它只包含javascript。这个类为“gws-flights-results\uuu trinerary-price”的div还没有呈现!这样你就不可能用这种方法来刮网站了。在

但是您可以使用其他方法,例如使用selenium或splash等工具获取页面来呈现javascript,然后解析内容。

beauthoulsoup是一个很好的工具,用于提取HTML或XML的一部分,但是这里看起来您只需要获取JSON对象的另一个get请求的url。在

(我现在不在电脑旁,明天可以用例子更新。)

看来javascript需要运行,所以使用selenium之类的方法

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()

相关问题 更多 >