首页 > 解决方案 > 以编程方式获取 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])

这只会返回一个非常有限的列表,我怀疑这种幼稚的抓取并没有真正获得所有数据。

标签: pythonbeautifulsoup

解决方案


由于数据是动态生成的,请转到 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
..

图片

在此处输入图像描述


推荐阅读