作者:淘老婆桃桃_267 | 来源:互联网 | 2023-01-29 16:08
我尝试登录网站并下载特定文件的尝试已经下降.
具体来说,我正在登录这个网站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))
也许我已经在整个过程的战壕中根深蒂固地看到了一个简单,可行的解决方案,但是非常感谢任何帮助.
1> 小智..:
您链接的网站使用基于HTTP POST的登录.在您的代码中,您有:
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
s = requests.Session()
接下来,您需要使用GET请求访问网站.这将为您生成COOKIE(服务器将为您的会话发送COOKIE).
s.get(site_url)
最后一步将是登录网站.您可以使用Firebug或Chrome Developer Console(取决于您使用的浏览器)来检查需要发送的字段(转到"网络"选项卡).
s.post(site_url, data={'_username': 'user', '_password': 'pass'})
这两个字段(_username,_password)似乎对您的站点有效,但是当我检查在POST请求期间发送的数据时,还有更多字段.我不知道他们是否有必要.
之后,您将通过身份验证.接下来将访问您要下载的文件的URL.
s.get(file_url)
您提供的链接包含查询字符串,其中包含可能与您要突出显示的选项相关的各种选项.您可以使用它来下载具有所需选项的文件.
警告说明
请注意,此站点未使用HTTPS安全连接.您将提供的任何凭据都将通过互联网进行未加密,并且可能会被不应该看到它们的人看到.