用惯了
requests,python的标准库倒是很久不碰。以致这次用urllib2稍微折腾了下。
记得301/302是自动跳转的,结果我这直接异常,参考
这里,简单重新实现了下重定向,结果仍然杯具。只能追源码:
def redirect_request(self, req, fp, code, msg, headers, newurl):
m = req.get_method()
if (code in (301, 302, 303, 307) and m in ("GET", "HEAD")
or code in (301, 302, 303) and m == "POST"):
# Strictly (according to RFC 2616), 301 or 302 in response
# to a POST MUST NOT cause a redirection without confirmation
# from the user (of urllib2, in this case). In practice,
# essentially all clients do redirect in this case, so we
# do the same.
# be conciliant with URIs containing a space
newurl = newurl.replace(' ', '%20')
newheaders = dict((k,v) for k,v in req.headers.items()
if k.lower() not in ("content-length", "content-type")
)
return Request(newurl,
headers=newheaders,
origin_req_host=req.get_origin_req_host(),
unverifiable=True)
else:
raise HTTPError(req.get_full_url(), code, msg, headers, fp)
感情是只支持post/get/head 方法,咱这用了put,额...(怎么用put,
参看这里)
只能把redirect_request一起覆盖了,什么put/delete统统加上,齐活~
另,才发现python2.6+的版本,urlopen竟然已支持timeout传参,幸而一直用的requests,才没有傻兮兮的一路setdefault
分享到:
相关推荐
说明:python的urllib2获取网页(urlopen)会自动重定向(301,302)。但是,有时候我们需要获取302,301页面的状态信息。就必须获取到转向前的调试信息。 下面代码将可以做到避免302重定向到新的网页 #!/usr/bin/...
与标准库中的 urllib 和 urllib2 模块相比,urllib3 提供了更加友好和方便的接口,支持连接池、重试、自动重定向等功能,使得 HTTP 客户端的编写变得更加简单和可靠。 urllib3 支持连接池管理,可以在多个请求之间...
urllib2支持获取不同格式的URLs(在URL的”:”前定义的字串,例如:”ftp”是”ftp:python.ort/”的前缀),它们利用它们相关网络协议(例如FTP,HTTP)进行获取。这篇教程关注最广泛的应用–HTTP。对于简单的应用,urlopen...
在开始后面的内容之前,先来解释一下urllib2中的两个个方法:info / geturl ...我们建一个urllib2_test10.py来比较一下原始URL和重定向的链接: 复制代码 代码如下: from urllib2 import Request, urlopen, UR
重试请求和处理 HTTP 重定向的帮助程序。 支持 gzip 和 deflate 编码。 代理支持 HTTP 和 SOCKS。 100% 的测试覆盖率。 urllib3 功能强大且易于使用:>>> 导入 urllib3 >>> ...
大多数Python生态系统已经使用urllib3,您也应该使用urllib3。 urllib3带来了Python标准中所缺少的许多关键功能urllib3是一个功能强大,对环境友好的Python HTTP客户端。 大多数Python生态系统已经使用urllib3,您也...
urllib.request模块提供了最基本的构造HTTP请求的方法, 利用它可以模拟浏览器的一个请求发起过程, 同时它还带有处理授权验证( authenticaton )、重定向( redirection) 、浏览器Cookies 以及其他内容。...
在较早的版本上,当存在基础重定向/ 404时,可能会出现未捕获的DecodeError异常。 对requests最新修复改进了重定向处理,urllib3和urllib3错误。 特征 metadata_parser尽可能多地从文档中提取元数据 开发人员可以...
urllib.request模块提供了最基本的构造HTTP请求的方法,利用它可以模拟浏览器的一个请求发起过程,同时它还带有处理授权验证(authenticaton)、重定向(redirection)、浏览器Cookies以及其他内容。 下面我们来看...
Opener + Handler 结构,可扩展(类似python urllib2) 什么东西少了 保活支持 多部分支持 https sdch 支持(无计划) 重定向支持 cookie 持久性 定时 记录器 ... 等等 如何安装 构建库 $ cargo build 构建测试...
必需的库:json,urllib,配置,render_template,请求,url_for,重定向,会话 注意:我们使用免费的Microsoft Auzre帐户,该服务将于2018/06/01后停止。 如果您在该日期之后运行此项目,请联系我们中的任何一个续...
py-parsehub Python3 ParseHub模块什么是ParseHub? ParseHub是一项提供自动网络抓取的服务。... 参见###先决条件python3(3.2.3测试) ($ pip3安装urllib3)用法初始化>>> from ph2 import ParseHub >>> ph = P
pythonCrawler 注意 exe_file是本程序爬取的附录,全部测试,实战识读路径全部指向exe_file 本爬虫笔记基于b站 在该教程的基础上对教程中的思路进行实践,对教程出现的错误进行修正,并且另外扩展,而不是教程源码...
久负盛名的 Python 入门经典针对 Python 3 全新升级十个出色的项目,让你尽快可以使用 Python 解决实际问题目录第 1章 快速上手:基础知识 ........................ 1 1.1 交互式解释器 .............................
处理重定向 很少的外部依赖 在响应中应用XSLT转换(需要Diazo) 依存关系 Django> = 1.8 urllib3> = 1.12 重氮> = 1.0.5(可选) lxml> = 3.4,<3.5(可选,但与重氮有关) 安装 pip install django