使用 BeautifulSoup 搜索 Yahoo Finance

Posted

技术标签:

【中文标题】使用 BeautifulSoup 搜索 Yahoo Finance【英文标题】:Using BeautifulSoup to Search Through Yahoo Finance 【发布时间】:2016-08-30 04:23:53 【问题描述】:

我正在尝试从“关键统计”页面中提取雅虎股票代码的信息(因为 Pandas 库不支持此功能)。

AAPL 示例:

from bs4 import BeautifulSoup
import requests

url = 'http://finance.yahoo.com/quote/AAPL/key-statistics?p=AAPL'
page = requests.get(url)
soup = BeautifulSoup(page.text, 'lxml')

enterpriseValue = soup.findAll('$ENTERPRISE_VALUE', attrs='class': 'yfnc_tablehead1') #html tag for where enterprise value is located

print(enterpriseValue)

编辑:谢谢安迪!

问题:这是打印一个空数组。如何将我的findAll 更改为返回598.56B

【问题讨论】:

【参考方案1】:

嗯,find_all 返回的列表为空的原因是因为该数据是通过单独的调用生成的,该调用不是通过向该 URL 发送 GET 请求来完成的。如果您查看 Chrome/Firefox 上的“网络”选项卡并按 XHR 过滤,通过检查每个网络操作的请求和响应,您也可以找到应该发送 GET 请求的 URL。

在这种情况下,它是https://query2.finance.yahoo.com/v10/finance/quoteSummary/AAPL?formatted=true&crumb=8ldhetOu7RJ&lang=en-US&region=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&region=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'

【讨论】:

这是金子!一般来说,我是网页报废的新手。你有什么资源可以指点我以避免在不久的将来出现类似的问题吗? 查看automatetheboringstuff.com/chapter11,如果您真的想深入了解,请考虑shop.oreilly.com/product/0636920034391.do。这是一项很棒的技能。

以上是关于使用 BeautifulSoup 搜索 Yahoo Finance的主要内容,如果未能解决你的问题,请参考以下文章

与Google分道扬镳,Firefox新默认搜索引擎Yahoo!

使用 BeautifulSoup 在 HTML 中搜索字符串

PHP cURL:从 yahoo/google api 检索搜索数据? [关闭]

生成yahoo和google搜索查询字符串

Firefox默认搜索引擎从 Yahoo调整为Google

如何在 Python 中使用 Beautifulsoup 从 Indeed 搜索中获取所有招聘信息的 href?