那麼,find_all
返回的列表是空的原因是因爲該數據是通過單獨的調用生成的,並不是通過向該URL發送GET
請求來完成的。如果您瀏覽Chrome/Firefox上的「網絡」選項卡,並通過XHR進行篩選,通過檢查每個網絡操作的請求和響應,您可以找到您應該發送的請求URL以及您應該發送的GET
請求。
在這種情況下,它是https://query2.finance.yahoo.com/v10/finance/quoteSummary/AAPL?formatted=true&crumb=8ldhetOu7RJ&lang=en-US®ion=US&modules=defaultKeyStatistics%2CfinancialData%2CcalendarEvents&corsDomain=finance.yahoo.com
,因爲我們可以在這裏看到:
那麼,我們該如何重建呢?簡單! :
from bs4 import BeautifulSoup
import requests
r = requests.get('https://query2.finance.yahoo.com/v10/finance/quoteSummary/AAPL?formatted=true&crumb=8ldhetOu7RJ&lang=en-US®ion=US&modules=defaultKeyStatistics%2CfinancialData%2CcalendarEvents&corsDomain=finance.yahoo.com')
data = r.json()
這將返回JSON
響應爲dict
。從那裏,瀏覽dict
,直到找到你想要的數據:
financial_data = data['quoteSummary']['result'][0]['defaultKeyStatistics']
enterprise_value_dict = financial_data['enterpriseValue']
print(enterprise_value_dict)
>>> {'fmt': '598.56B', 'raw': 598563094528, 'longFmt': '598,563,094,528'}
print(enterprise_value_dict['fmt'])
>>> '598.56B'
這是黃金!一般來說,我是網頁報廢新手。有沒有什麼資源可以指導我在不久的將來避免類似的問題? –
查看https://automatetheboringstuff.com/chapter11/,如果您真的想深入探索,請考慮http://shop.oreilly.com/product/0636920034391.do。這是一項非常棒的技能。 – n1c9