首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python -登录并从网站下载特定文件

Python -登录并从网站下载特定文件
EN

Stack Overflow用户
提问于 2017-07-15 00:35:21
回答 1查看 34.5K关注 0票数 9

我登录网站并下载特定文件的尝试失败了。

具体来说,我正在登录这个网站http://www.gaez.iiasa.ac.at/w/ctrl?_flow=Vwr&_view=Welcome&fieldmain=main_lr_lco_cult&idPS=0&idAS=0&idFS=0

以便在下载文件并另存为excel或csv之前选择特定的变量和参数。

特别是,我想切换突出显示的输入

,然后选择作物类型、供水、输入级别、时间段和地理区域,然后在“可视化和下载”按钮下下载文件。

例如,我想获得小麦(作物),雨水供应(供水),高(投入水平),1961年至1990年(时间段,基线),美利坚合众国(地理区域)的数据。然后我想把它另存为excel文件。

这是我到目前为止的代码:

代码语言:javascript
复制
# Import library
import requests

# Define url, username, and password
url = 'http://www.gaez.iiasa.ac.at/w/ctrl?_flow=Vwr&_view=Welcome&fieldmain=main_lr_lco_cult&idPS=0&idAS=0&idFS=0'
user, password = 'Username', 'Password'
resp = requests.get(url, auth=(user, password))

也许我在整个过程中根深蒂固,希望看到一个简单、可行的解决方案,但任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-15 01:04:13

您链接的网站使用基于HTTP POST的登录。在你的代码中,你有:

代码语言:javascript
复制
resp = requests.get(url, auth=(user, password))

它将使用基本的http身份验证http://docs.python-requests.org/en/master/user/authentication/#basic-authentication

要登录此站点,您需要两样东西:

  • 持久会话cookie
  • HTTP POST请求登录表单URL

首先,让我们创建保存来自服务器http://docs.python-requests.org/en/master/user/advanced/#session-objects的cookies的会话对象

代码语言:javascript
复制
s = requests.Session()

接下来,您需要使用GET请求访问站点。这将为您生成cookie (服务器将为您的会话发送cookie )。

代码语言:javascript
复制
s.get(site_url)

最后一步将是登录到网站。您可以使用Firebug或Chrome开发人员控制台(取决于您使用的浏览器)来检查需要发送哪些字段(转到网络选项卡)。

代码语言:javascript
复制
s.post(site_url, data={'_username': 'user', '_password': 'pass'})

这两个字段(_username,_password)似乎对您的站点有效,但当我检查POST请求期间发送的数据时,发现有更多的字段。我不知道它们是否有必要。

在此之后,您将通过身份验证。下一件事是访问你想要下载的文件的URL。

代码语言:javascript
复制
s.get(file_url)

您提供的链接包含带有各种选项的查询字符串,这些选项可能与要突出显示的选项相关。您可以使用它来下载具有所需选项的文件。

警告说明

请注意,此网站未使用HTTPS安全连接。您将提供的任何凭据都将在未加密的情况下通过互联网,并且可能会被不应该看到它们的人看到。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45107839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档