我试图从以下网站下载 .csv 文件:https://www.nasdaq.com/market-activity/stocks/screener?exchange=nyse&letter=0&render=download。希望能得到帮助。
正如@JoeAkanesuvan所指出的那样,该信息是通过JSON API获取的。可以使用requests
库访问它。然后可以使用Python将其转换为CSV文件,方法如下:
import requests
import csv
headers = {
"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0",
}
url = "https://api.nasdaq.com/api/screener/stocks?tableonly=true&limit=3296&exchange=nyse"
r = requests.get(url, headers=headers)
j = r.json()
table = j['data']['table']
table_headers = table['headers']
with open('Stocks.csv', 'w', newline='') as f_output:
csv_output = csv.DictWriter(f_output, fieldnames=table_headers.values(), extrasaction='ignore')
csv_output.writeheader()
for table_row in table['rows']:
csv_row = {table_headers.get(key, None) : value for key, value in table_row.items()}
csv_output.writerow(csv_row)
我建议您使用print(j)
,以更好地了解返回数据的结构。
这将输出以下内容:
Symbol,Name,Last Sale,Net Change,% Change,Market Cap
BABA,Alibaba Group Holding Limited American Depositary Shares each representing eight Ordinary share,$260.25,-5.67,-2.132%,"704,141,925,150"
TSM,Taiwan Semiconductor Manufacturing Company Ltd.,$121.74,-4.91,-3.877%,"631,343,640,000"
JNJ,Johnson & Johnson Common Stock,$167.88,-2.60,-1.525%,"441,951,263,775"
https://api.nasdaq.com/api/screener/stocks
获取数据。有趣的是,它以json格式回复,页面上的javascript必须将其转换为csv供您下载。 - Arthur Borshenko