用惯了
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 2.x版本,`urllib2`提供了比`urllib`更高级的接口,支持更多的功能,如认证、重定向管理等。但在Python 3.x中,这些功能被整合进了`urllib`模块的不同子模块中。 ### Requests库安装详解 #### 1. ...
- **自动处理HTTP重定向**:urllib3会自动处理HTTP的3xx状态码,根据响应头中的Location字段进行重定向。 - **HTTPS支持**:urllib3包含了对SSL/TLS的内置支持,可以安全地处理HTTPS请求。 - **请求超时设置**:...
4. **urllib2** (仅在Python 2.x中): 在Python 2.x中,urllib2模块提供了一个更高级的接口,包含了request、error和一些其他功能,比如处理HTTP基本认证、代理等。但在Python 3.x中,这些功能被整合到urllib.request...
3. **默认配置**:requests库的默认设置更友好,比如自动处理编码和重定向,而urllib3需要手动设置这些。 在实际应用中,如果需要简洁易用且满足基本需求,requests通常是首选。若涉及到复杂网络环境,如需要精细...
此外,`urllib2`通过`handlers`和`openers`的概念,为处理复杂请求(如代理、身份验证、重定向)提供了强大的灵活性。 #### 获取URLs 最基本的使用方式如下: ```python import urllib2 response = urllib2....
`urllib2` 是 Python 早期用于处理 URL 请求的标准库之一,在 Python 2.x 版本中广泛使用。随着 Python 3.x 的普及,该模块已被整合进 `urllib` 包中,并有所调整。尽管如此,了解 `urllib2` 仍然有助于更好地掌握...
Python的urllib2模块是用于处理URL的工具集,它为开发者提供了强大的功能,包括访问网页、处理HTTP请求和响应、处理HTTP头、处理认证、处理cookies和代理等。在这个模块中,`urlopen()`函数是最核心的部分,它能够...
`urllib` 是 Python 的一个标准库,主要用于处理 URL 操作,比如抓取网页内容、解析 URL 和处理异常情况等。对于从事 Web 开发或者需要从互联网上抓取数据的开发者来说,`urllib` 提供了一系列强大的工具和功能。 #...
urllib2库不仅提供了基本的HTTP请求功能,还能处理各种网络环境下的复杂情况,如错误处理、重定向、安全认证等,是Python进行Web开发和爬虫程序编写的重要工具。通过结合Request对象和Opener对象,开发者可以构建出...
在这个特定的场景中,我们看到标题提到的是"pythonurllib模块下载图片共9页.pdf.z",这暗示了一个使用`urllib`下载图片的教程或指南,可能是一个PDF文档,共9页,被压缩为了一个`.zip`文件。虽然无法直接提供压缩...
Python2中的urllib库分为urllib、urllib2两个子库,而在Python3中,这两个子库被整合到一个名为urllib的大库下,具体分为urllib.request、urllib.error、urllib.parse三个子模块。这种改变使得代码结构更加清晰,...
知识点:Python的urllib2模块详解 一、引言与概述 urllib2是Python中的一个强大模块,专门用于从互联网上抓取URL资源。它不仅提供了基础的URL获取功能,还支持处理复杂的网络请求场景,如基本认证、代理设置、错误...
说明:python的urllib2获取网页(urlopen)会自动重定向(301,302)。但是,有时候我们需要获取302,301页面的状态信息。就必须获取到转向前的调试信息。 下面代码将可以做到避免302重定向到新的网页 #!/usr/bin/...
总结,`urllib2`是Python 2中强大的URL处理工具,提供了丰富的功能来处理HTTP请求、重定向、认证、代理等。在Python 3中,这些功能被分散到`urllib.request`和`urllib.error`中,开发者需要根据具体需求进行适配。...
urllib2是Python标准库中的一个模块,用于处理URL相关的任务,比如打开和读取URL。它支持通过HTTP协议进行高级的网络请求操作。当我们需要在使用urllib2进行网络请求时携带cookie,可以通过自定义opener并使用add...
Python中的`urllib`, `urllib2`, 和`httplib`是用于网络数据请求和处理的库,它们在Web开发和爬虫项目中扮演着重要角色。这些库可以帮助开发者发送HTTP请求,获取响应,处理cookies,使用代理,以及处理重定向等问题...
Python的`urllib`库是进行网络数据请求和处理的基础工具,特别在Web爬虫领域中扮演着重要的角色。这个库包含多个子模块,每个子模块都有特定的功能,旨在简化HTTP和其他协议的数据获取。 1. **urllib.request**模块...
### Python2/3中urllib库的一些常见用法 #### Urllib库简介 Urllib库是Python中的一个重要组件,主要用于处理URLs。无论是对于网络爬虫还是自动化脚本开发,掌握Urllib的基本用法都是非常重要的。该库允许开发者...
4. **Redirect**:urllib2默认处理重定向,即当收到3xx状态码时,会自动执行跳转。如果你想要检查是否发生了重定向,可以通过比较`Response`对象的URL和原始`Request`的URL来判断。 5. **Cookie**:urllib2不直接...
Python中的urllib、urllib2和cookielib是Python标准库中用于网络数据请求和处理的重要模块,它们在网页爬虫开发中起着至关重要的作用。这三个模块共同为Python提供了强大的HTTP请求功能,使得开发者能够方便地从...