亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

網絡抓取谷歌航班價格

網絡抓取谷歌航班價格

達令說 2021-12-21 11:02:15
我正在嘗試學習使用 Python 庫 BeautifulSoup,例如,我想在 Google Flights 上獲取航班價格。所以我連接到谷歌航班,例如在這個鏈接,我想獲得最便宜的航班價格。因此,我將使用此類“gws-flights-results__itinerary-price”(如圖所示)獲取 div 內的值。這是我寫的簡單代碼:from bs4 import BeautifulSoupimport urllib.requesturl = '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 回答

?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

看起來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()


查看完整回答
反對 回復 2021-12-21
?
慕容森

TA貢獻1853條經驗 獲得超18個贊

您正在學習網絡抓取真是太好了!您之所以獲得 NoneType 結果是因為您正在抓取的網站動態加載內容。當請求庫獲取 url 時,它只包含 javascript。帶有此類“gws-flights-results__itinerary-price”的 div 尚未呈現!因此,您用來抓取該網站的抓取方法是不可能的。

但是,您可以使用其他方法,例如使用 selenium 或 splash 等工具獲取頁面來呈現 javascript,然后解析內容。


查看完整回答
反對 回復 2021-12-21
?
臨摹微笑

TA貢獻1982條經驗 獲得超2個贊

BeautifulSoup 是提取部分 HTML 或 XML 的絕佳工具,但在這里看起來您只需要獲取另一個 JSON 對象的 GET 請求的 url。

(我現在不在電腦旁,明天可以更新一個例子。)


查看完整回答
反對 回復 2021-12-21
  • 3 回答
  • 0 關注
  • 192 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號