gpt4 book ai didi

python - 使用python在Barchart网站上抓取表格

转载 作者:行者123 更新时间:2023-12-04 09:35:42 27 4
gpt4 key购买 nike

Scraping an AJAX web page using python and requests
我使用上面链接中的脚本在 Barchart 网站上获取了一个表格,但它最近以某种方式停止工作,并显示错误消息 {'error': {'message': 'The payload is invalid.', 'code': 400}}。我想一些归档名称已更改,但我对网络扫描很陌生,我无法弄清楚如何修复它。有什么建议?

import requests

geturl=r'https://www.barchart.com/futures/quotes/CLJ19/all-futures'
apiurl=r'https://www.barchart.com/proxies/core-api/v1/quotes/get'


getheaders={

'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'en-US,en;q=0.9',
'cache-control': 'max-age=0',
'upgrade-insecure-requests': '1',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36'
}

getpay={
'page': 'all'
}

s=requests.Session()
r=s.get(geturl,params=getpay, headers=getheaders)



headers={
'accept': 'application/json',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'en-US,en;q=0.9',
'referer': 'https://www.barchart.com/futures/quotes/CLJ19/all-futures?page=all',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36',
'x-xsrf-token': s.cookies.get_dict()['XSRF-TOKEN']

}
payload={
'fields': 'symbol,contractSymbol,lastPrice,priceChange,openPrice,highPrice,lowPrice,previousPrice,volume,openInterest,tradeTime,symbolCode,symbolType,hasOptions',
'list': 'futures.contractInRoot',
'root': 'CL',
'meta': 'field.shortName,field.type,field.description',
'hasOptions': 'true',
'raw': '1'

}


r=s.get(apiurl,params=payload,headers=headers)
j=r.json()
print(j)
OUT: {'error': {'message': '有效载荷无效。', 'code': 400}}

最佳答案

这也发生在我身上。这是因为网站从内部 API 获取表格,并且应对 cookie 进行解码以避免此错误。
试试这个解决方案:
1- 在代码开头导入 unquote 函数

from urllib.parse import unquote
2-更改此行:
'x-xsrf-token': s.cookies.get_dict()['XSRF-TOKEN']
对此:
'x-xsrf-token': unquote(unquote(s.cookies.get_dict()['XSRF-TOKEN']))

关于python - 使用python在Barchart网站上抓取表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62605088/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com