热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《Python-从网站登录和下载特定文件》经验,为你挑选了1个好方法。

我尝试登录网站并下载特定文件的尝试已经下降.

具体来说,我正在登录这个网站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安全连接.您将提供的任何凭据都将通过互联网进行未加密,并且可能会被不应该看到它们的人看到.


推荐阅读
  • Python + Pytest 接口自动化测试中 Token 关联登录的实现方法
    本文将深入探讨 Python 和 Pytest 在接口自动化测试中如何实现 Token 关联登录,内容详尽、逻辑清晰,旨在帮助读者掌握这一关键技能。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • 本文介绍如何使用 Angular 6 的 HttpClient 模块来获取 HTTP 响应头,包括代码示例和常见问题的解决方案。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • Django Token 认证详解与 HTTP 401、403 状态码的区别
    本文详细介绍了如何在 Django 中配置和使用 Token 认证,并解释了 HTTP 401 和 HTTP 403 状态码的区别。通过具体的代码示例,帮助开发者理解认证机制及权限控制。 ... [详细]
  • Navicat Premium 15 安装指南及数据库连接配置
    本文详细介绍 Navicat Premium 15 的安装步骤及其对多种数据库(如 MySQL 和 Oracle)的支持,帮助用户顺利完成软件的安装与激活。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • 微信小程序:授权登录与手机号绑定
    本文详细介绍了微信小程序中用户授权登录及绑定手机号的流程,结合官方指引和实际开发经验,提供了一套完整的实现方案,帮助开发者更好地理解和应用。 ... [详细]
author-avatar
淘老婆桃桃_267
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有