Python请求:Url将在浏览器中显示表,但在我使用请求时不会显示

2024-04-24 23:09:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在网页中刮取一个表,甚至使用请求库下载该表的.xlsx文件

正常工作流程:

我登录这个网站。转到我的报告页面,选择报告,单击显示“测试”的按钮,第二个窗口打开,显示我的表格,并提供下载.xlsx文件的选项

当我尝试访问此url时,我可以将其复制并粘贴到我当前登录的任何chrome浏览器中。当我尝试处理请求时,即使在将auth传递到我的get()中,我也会得到一个200响应,但这是一个简单的页面,其中有一行文本告诉我“联系我的技术人员以接收正确的url以输入您的用户名和密码”。这与我将url粘贴到未登录网站的浏览器中时相同。除非我这样做了,否则我会被重定向到一个具有相同句子的新url

因此,我想象当我在浏览器中访问这个站点时,有一个组织的slug不是在url中传递的,而是在标题或cookie中的某个地方传递的。如何在HTTP标头中标识此参数?然后,我如何将其发送到请求,以便获得我的表并继续尝试自动下载.xlsx

import requests

url = 'myorganization.com/adhocHTML.xsl?x=adhoc.AdHocFilter-listAdhocData&filterID=45678&source=live'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36'}

data = requests.get(url, headers=headers, auth=('username', 'Password'))

任何帮助都将不胜感激,因为我是请求库的新手,只是在分析数据流之前尝试自动化一些数据流


Tags: 文件authurl网页get网站粘贴报告
1条回答
网友
1楼 · 发布于 2024-04-24 23:09:52

您需要使用请求登录。您可以通过创建会话来完成此操作,也可以通过此会话发出其他请求(它将保存所有cookie和其他内容)


在编写代码之前,您应该执行以下几个步骤: 确保您已注销。在登录页面中打开浏览器检查。转到“网络”选项卡。登录并在“网络”选项卡中找到与登录请求相关的POST请求。在该选项卡的末尾,您可以找到一些用于登录的参数。将参数设置为代码中的字典(登录数据),如下所示:

session = requests.Session()
session.post('url_to_login_page', login_data)
data = session.get(url, headers=headers)

每个网站的登录数据都不同于其他网站,所以我不能给你一个具体的例子。正如我上面所说,你应该能够找到它。如果你有问题,告诉我

相关问题 更多 >