当我在Chrome浏览器中打开这个link,将光标悬停在左上角的Stocks
上,并从类别Most Active
中 Select Trading Liquidity
,我可以看到该页面上显示的所需数据.
我试图使用下面的脚本复制我可以在Chrome dev工具中看到的XHR查询,但结果是STATUS_CODE 400.
import requests
url = 'https://www.barchart.com/proxies/core-api/v1/quotes/get'
link = 'https://www.barchart.com/stocks/most-active/daily-volume-leaders'
headers = {
'Accept': 'application/json',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'en-US,en;q=0.5',
'Host': 'www.barchart.com',
'Referer': 'https://www.barchart.com/stocks/most-active/trading-liquidity',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0',
}
params = {
'lists': 'stocks.us.trading_liquidity.advances.overall',
'orderDir': 'desc',
'fields': 'symbol,symbolName,lastPrice,priceChange,percentChange,averageVolume100d,sharesOutstanding,tradingRatio,tradeTime,symbolCode,symbolType,hasOptions',
'orderBy': 'tradingRatio',
'meta': 'field.shortName,field.type,field.description,lists.lastUpdate',
'hasOptions': 'true',
'page': '1',
'limit': '100',
'raw': '1',
}
with requests.Session() as s:
s.headers.update(headers)
res = s.get(link)
s.headers['X-Xsrf-Token'] = res.cookies['XSRF-TOKEN']
resp = s.get(url)
print(resp.status_code)
print(resp.json())
如何让脚本生成JSON响应?