python - 以编程方式获取 NASDAQ-100 的组件列表
问题描述
我正在尝试以编程方式获取 NASDAQ-100 中包含的公司列表。我尝试使用 Beautiful Soup -抓取Nasdaq-100-Index-Componentsbs4
,但到目前为止没有太大成功。
我怎样才能得到这个列表(股票代码和公司名称)?
s = requests.Session()
s.headers.update(
{
"Accept-Language":"en-US,en;q=0.9",
"Accept-Encoding":"gzip, deflate, br",
"User-Agent":"Java-http-client/"
}
)
r = s.get("https://www.nasdaq.com/market-activity/quotes/nasdaq-ndx-index")
soup = BeautifulSoup(r.content, "html.parser")
res = json.loads([x for x in soup.find("script", {"type": "application/json"})][0])
这只会返回一个非常有限的列表,我怀疑这种幼稚的抓取并没有真正获得所有数据。
解决方案
由于数据是动态生成的,请转到 chrome 开发人员模式到网络选项卡并通过在框中搜索并刷新网站来查找数据,现在您可以找到内容公司列出数据作为json
数据的链接
import requests
headers={"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36"}
res=requests.get("https://api.nasdaq.com/api/quote/list-type/nasdaq100",headers=headers)
main_data=res.json()['data']['data']['rows']
for i in range(len(main_data)):
print(main_data[i]['companyName'])
输出:
Activision Blizzard, Inc. Common Stock
Adobe Inc. Common Stock
Advanced Micro Devices, Inc. Common Stock
Align Technology, Inc. Common Stock
..
图片
推荐阅读
- c++ - 翻译过程中奇怪的 MVP 行为
- javascript - 通过使用 Javascript 在网页上创建的日期顺序从 SharePoint 库文件夹中加载内容
- c++ - MinGW GCC:析构函数和非虚拟 thunk 的多重定义
- html - 为什么 flex-end 不适用于列表中的最后一项?
- testing - 应该测试响应能力的基本尺寸是什么?
- python - 如何将打印输出到 CSV 文件
- gradle - 从 Gradle 项目运行可执行文件时在 JavaFX 中捆绑?
- php - Laravel 6.x 将关系数据作为属性操作
- c++ - Strange GCC (trunk) behaviour using c++20 concept with templated class: Is it a bug or a feature?
- rust - 如何在 rust 中消耗和替换静态大小数组的每个元素?