`
iyuan
  • 浏览: 471782 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

python urllib2的301/302重定向处理

阅读更多
用惯了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
0
0
分享到:
评论

相关推荐

    Python urllib urllib2 urllib模块安装说明

    对于Python 2.x版本,`urllib2`提供了比`urllib`更高级的接口,支持更多的功能,如认证、重定向管理等。但在Python 3.x中,这些功能被整合进了`urllib`模块的不同子模块中。 ### Requests库安装详解 #### 1. ...

    python urllib3

    - **自动处理HTTP重定向**:urllib3会自动处理HTTP的3xx状态码,根据响应头中的Location字段进行重定向。 - **HTTPS支持**:urllib3包含了对SSL/TLS的内置支持,可以安全地处理HTTPS请求。 - **请求超时设置**:...

    Python urllib urllib模块

    4. **urllib2** (仅在Python 2.x中): 在Python 2.x中,urllib2模块提供了一个更高级的接口,包含了request、error和一些其他功能,比如处理HTTP基本认证、代理等。但在Python 3.x中,这些功能被整合到urllib.request...

    python urllib3 requests

    3. **默认配置**:requests库的默认设置更友好,比如自动处理编码和重定向,而urllib3需要手动设置这些。 在实际应用中,如果需要简洁易用且满足基本需求,requests通常是首选。若涉及到复杂网络环境,如需要精细...

    python urllib2详解及实例 Python开发技术文章_教程 - 红黑联盟.pdf

    此外,`urllib2`通过`handlers`和`openers`的概念,为处理复杂请求(如代理、身份验证、重定向)提供了强大的灵活性。 #### 获取URLs 最基本的使用方式如下: ```python import urllib2 response = urllib2....

    python urllib2模块实例简介.docx

    `urllib2` 是 Python 早期用于处理 URL 请求的标准库之一,在 Python 2.x 版本中广泛使用。随着 Python 3.x 的普及,该模块已被整合进 `urllib` 包中,并有所调整。尽管如此,了解 `urllib2` 仍然有助于更好地掌握...

    pythonurllib2模块实例简介.pdf

    Python的urllib2模块是用于处理URL的工具集,它为开发者提供了强大的功能,包括访问网页、处理HTTP请求和响应、处理HTTP头、处理认证、处理cookies和代理等。在这个模块中,`urlopen()`函数是最核心的部分,它能够...

    「Python系列」Python urllib库(操作网页URL对网页的内容进行抓取处理).md

    `urllib` 是 Python 的一个标准库,主要用于处理 URL 操作,比如抓取网页内容、解析 URL 和处理异常情况等。对于从事 Web 开发或者需要从互联网上抓取数据的开发者来说,`urllib` 提供了一系列强大的工具和功能。 #...

    Python urllib2运行过程原理解析

    urllib2库不仅提供了基本的HTTP请求功能,还能处理各种网络环境下的复杂情况,如错误处理、重定向、安全认证等,是Python进行Web开发和爬虫程序编写的重要工具。通过结合Request对象和Opener对象,开发者可以构建出...

    pythonurllib模块下载图片共9页.pdf.z

    在这个特定的场景中,我们看到标题提到的是"pythonurllib模块下载图片共9页.pdf.z",这暗示了一个使用`urllib`下载图片的教程或指南,可能是一个PDF文档,共9页,被压缩为了一个`.zip`文件。虽然无法直接提供压缩...

    Python2.X/Python3.X中urllib库区别讲解

    Python2中的urllib库分为urllib、urllib2两个子库,而在Python3中,这两个子库被整合到一个名为urllib的大库下,具体分为urllib.request、urllib.error、urllib.parse三个子模块。这种改变使得代码结构更加清晰,...

    phython urllib2 api

    知识点:Python的urllib2模块详解 一、引言与概述 urllib2是Python中的一个强大模块,专门用于从互联网上抓取URL资源。它不仅提供了基础的URL获取功能,还支持处理复杂的网络请求场景,如基本认证、代理设置、错误...

    Python中使用urllib2防止302跳转的代码例子

    说明:python的urllib2获取网页(urlopen)会自动重定向(301,302)。但是,有时候我们需要获取302,301页面的状态信息。就必须获取到转向前的调试信息。 下面代码将可以做到避免302重定向到新的网页 #!/usr/bin/...

    urllib2 官方文档解析1

    总结,`urllib2`是Python 2中强大的URL处理工具,提供了丰富的功能来处理HTTP请求、重定向、认证、代理等。在Python 3中,这些功能被分散到`urllib.request`和`urllib.error`中,开发者需要根据具体需求进行适配。...

    python使用urllib2实现发送带cookie的请求

    urllib2是Python标准库中的一个模块,用于处理URL相关的任务,比如打开和读取URL。它支持通过HTTP协议进行高级的网络请求操作。当我们需要在使用urllib2进行网络请求时携带cookie,可以通过自定义opener并使用add...

    Python urllib、urllib2、httplib抓取网页代码实例

    Python中的`urllib`, `urllib2`, 和`httplib`是用于网络数据请求和处理的库,它们在Web开发和爬虫项目中扮演着重要角色。这些库可以帮助开发者发送HTTP请求,获取响应,处理cookies,使用代理,以及处理重定向等问题...

    Python urllib.request对象案例解析

    Python的`urllib`库是进行网络数据请求和处理的基础工具,特别在Web爬虫领域中扮演着重要的角色。这个库包含多个子模块,每个子模块都有特定的功能,旨在简化HTTP和其他协议的数据获取。 1. **urllib.request**模块...

    Python2/3中urllib库的一些常见用法

    ### Python2/3中urllib库的一些常见用法 #### Urllib库简介 Urllib库是Python中的一个重要组件,主要用于处理URLs。无论是对于网络爬虫还是自动化脚本开发,掌握Urllib的基本用法都是非常重要的。该库允许开发者...

    Python标准库urllib2的一些使用细节总结

    4. **Redirect**:urllib2默认处理重定向,即当收到3xx状态码时,会自动执行跳转。如果你想要检查是否发生了重定向,可以通过比较`Response`对象的URL和原始`Request`的URL来判断。 5. **Cookie**:urllib2不直接...

    Python中urllib+urllib2+cookielib模块编写爬虫实战

    Python中的urllib、urllib2和cookielib是Python标准库中用于网络数据请求和处理的重要模块,它们在网页爬虫开发中起着至关重要的作用。这三个模块共同为Python提供了强大的HTTP请求功能,使得开发者能够方便地从...

Global site tag (gtag.js) - Google Analytics