当我在Chrome浏览器中打开这个link,将光标悬停在位于左上角的Stocks
上,并从Most Active
类别中选择Trading Liquidity
时,我可以看到所需的数据显示在该页面上。
我尝试使用下面的脚本来复制我在Chrome开发工具中看到的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响应?
1条答案
按热度按时间ubby3x7f1#
问得好,我需要做些调查。
cookie没有正确编码,因此您需要
unquote
它们:字符串
然后:
型
使用您的代码:
型