我登录网站并下载特定文件的尝试失败了。
具体来说,我正在登录这个网站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文件。
这是我到目前为止的代码:
# 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))也许我在整个过程中根深蒂固,希望看到一个简单、可行的解决方案,但任何帮助都是非常感谢的。
发布于 2017-07-15 01:04:13
您链接的网站使用基于HTTP POST的登录。在你的代码中,你有:
resp = requests.get(url, auth=(user, password))它将使用基本的http身份验证http://docs.python-requests.org/en/master/user/authentication/#basic-authentication
要登录此站点,您需要两样东西:
首先,让我们创建保存来自服务器http://docs.python-requests.org/en/master/user/advanced/#session-objects的cookies的会话对象
s = requests.Session()接下来,您需要使用GET请求访问站点。这将为您生成cookie (服务器将为您的会话发送cookie )。
s.get(site_url)最后一步将是登录到网站。您可以使用Firebug或Chrome开发人员控制台(取决于您使用的浏览器)来检查需要发送哪些字段(转到网络选项卡)。
s.post(site_url, data={'_username': 'user', '_password': 'pass'})这两个字段(_username,_password)似乎对您的站点有效,但当我检查POST请求期间发送的数据时,发现有更多的字段。我不知道它们是否有必要。
在此之后,您将通过身份验证。下一件事是访问你想要下载的文件的URL。
s.get(file_url)您提供的链接包含带有各种选项的查询字符串,这些选项可能与要突出显示的选项相关。您可以使用它来下载具有所需选项的文件。
警告说明
请注意,此网站未使用HTTPS安全连接。您将提供的任何凭据都将在未加密的情况下通过互联网,并且可能会被不应该看到它们的人看到。
https://stackoverflow.com/questions/45107839
复制相似问题