好吧,
find_all返回的列表为空的原因是因为该数据是通过单独的调用生成的,仅通过
GET向该URL发送请求就无法完成。如果浏览Chrome /
Firefox上的“网络”标签并按XHR进行过滤,则通过检查每个网络操作的请求和响应,您还可以找到应该发送
GET请求的URL 。
在这种情况下,它是
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 BeautifulSoupimport requestsr = 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'


