gpt4 book ai didi

python - 无法从请求 python 获取完整表

转载 作者:太空宇宙 更新时间:2023-11-03 21:44:41 26 4
gpt4 key购买 nike

我正在尝试从这个网站获取整个表格:https://br.investing.com/commodities/aluminum-historical-data

但是当我发送此代码时:

with requests.Session() as s:
r = s.post('https://br.investing.com/commodities/aluminum-historical-data',
headers={"curr_id": "49768","smlID": "300586","header": "Alumínio Futuros Dados Históricos",
'User-Agent': 'Mozilla/5.0', 'st_date': '01/01/2017','end_date': '29/09/2018',
'interval_sec': 'Daily','sort_col': 'date','sort_ord': 'DESC','action': 'historical_data'})

bs2 = BeautifulSoup(r.text,'lxml')
tb = bs2.find('table',{"id":"curr_table"})

它只返回表格的一部分,而不是我刚刚过滤的整个日期。

我确实看到了下面的帖子页面:

enter image description here

任何人都可以帮我获取我刚刚过滤的整个表格吗?

最佳答案

您的代码犯了两个错误。

第一个是网址。您需要使用正确的 URL 向investing.com 请求数据。您当前的url'https://br.investing.com/commodities/aluminum-historical-data'

但是,当您看到检查并单击'Network'Request URLhttps://br.investing.com/instruments/HistoricalDataAjax .

你的第二个错误存在于 s.post(blah) 。正如 Federico Rubbi 上面提到的,您编码的内容分配给 headers必须分配给data相反。

现在,你的错误已经全部解决了。您只需多做一步即可。你必须添加字典{'X-Requested-With': 'XMLHttpRequest'}your_headers 。从你的代码来看,我可以看到你已经检查了 Network tabHTML inspection 。所以,您可能能够明白为什么您需要 {'X-Requested-With': 'XMLHttpRequest'} .

所以整个代码应该如下。

import requests
import bs4 as bs

with requests.Session() as s:
url = 'https://br.investing.com/instruments/HistoricalDataAjax' # Making up for the first mistake.
your_headers = {'User-Agent': 'Mozilla/5.0'}

s.get(url, headers= your_headers)
c_list = s.cookies.get_dict().items()
cookie_list = [key+'='+value for key,value in c_list]
cookie = ','.join(cookie_list)

your_headers = {**{'X-Requested-With': 'XMLHttpRequest'},**your_headers}
your_headers['Cookie'] = cookie

data= {} # Your data. Making up for the second mistake.

response = s.post(url, data= data, headers = your_headers)

关于python - 无法从请求 python 获取完整表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52582830/

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