文档章节

python—urllib2 中自定义 opener 详解

passionfly
 passionfly
发布于 2015/05/09 11:44
字数 340
阅读 17
收藏 1

urllib2.urlopen()函数不支持验证、cookie或者其它HTTP高级功能。要支持这些功能,必须使用build_opener()函数创建自定义Opener对象。

 代码如下:
build_opener([handler1 [ handler2, ... ]])

参数handler是Handler实例,常用的有HTTPBasicAuthHandler、HTTPCookieProcessor、ProxyHandler等。

build_opener ()返回的对象具有open()方法,与urlopen()函数的功能相同。

如果要修改http报头,可以用:

代码如下:
import urllib2
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
opener.open('http://www.example.com/')

2. install_opener(opener)

安装不同的opener对象作为urlopen()使用的全局opener。

3. 密码验证(HTTPBasicAuthHandler)

HTTPBasicAuthHandler()处理程序可用add_password()来设置密码。

代码如下:
h.add_password(realm,uri,user,passwd)

realm是与验证相关联的名称或描述信息,取决于远程服务器。uri是基URL。user和passwd分别指定用户名和密码。

代码如下:
import urllib2
auth=urllib2.HTTPBasicAuthHandler()
auth.add_password('Administrator','http://www.example.com','Dave','123456')
opener=urllib2.build_opener(auth)
u=opener.open('http://www.example.com/evilplan.html')

4. Cookie处理(HTTPCookieProcessor)

代码如下:
import urllib2,cookielib
cookie=cookielib.CookieJar()
cookiehand=urllib2.HTTPCookieProcessor(cookie)
opener=urllib2.build_opener(cookiehand)

5.代理(ProxyHandler)

ProxyHandler(proxies)参数proxies是一个字典,将协议名称(http,ftp)等映射到相应代理服务器的URL。

代码如下:

import urllib2
proxy=urllib2.ProxyHandler({'http':'http://someproxy.com:8080'})
auth=urlib2.HTTPBasicAuthHandler()
auth.add_password()
opener=build_opener(auth,proxy)

也可以在urlopen中使用代理

代码如下:
import urllib2 
proxy = 'http://%s:%s@%s' % ('userName', 'password', 'proxy') 
inforMation = urllib2.urlopen("http://www.example.com", proxies={'http':proxy}) 





本文转载自:www.jb51.net/article/46495.htm

passionfly
粉丝 15
博文 106
码字总数 76465
作品 0
西安
私信 提问
python模块之---- urllib2模块详解

简介: urllib2是python的一个获取url(Uniform Resource Locators,统一资源定址器)的模块。它用urlopen函数的形式提供了一个非常简洁的接口。这使得用各种各样的协议获取url成为可能。它同...

索隆
2012/04/27
0
0
urllib与urllib2的学习总结(python2.7.X)

先啰嗦一句,我使用的版本是python2.7,没有使用3.X的原因是我觉得2.7的扩展比较多,且较之前的版本变化不大,使用顺手。3.X简直就是革命性的变化,用的蹩手。3.x的版本urllib与urllib2已经合...

yzy121403725
2018/06/27
0
0
Python爬虫入门:Cookie的使用

大家好哈,上一节我们研究了一下爬虫的异常处理问题,那么接下来我们一起来看一下Cookie的使用。 为什么要使用Cookie呢? Cookie,指某些网站为了辨别用户身份、进行session跟踪而储存在用户...

天才小熊猫QAQ
2017/11/01
0
0
python urllib使用

简介: urllib2是python的一个获取url(Uniform Resource Locators,统一资源定址器)的模块。它用urlopen函数的形式提供了一个非常简洁的接口。这使得用各种各样的协议获取url成为可能。它同...

durban
2012/04/14
0
0
Python如何使用urllib2获取网络资源

urllib2是Python的一个获取URLs(Uniform Resource Locators)的组件。他以urlopen函数的形式提供了一个非常简单的接口, 这是具有利用不同协议获取URLs的能力,他同样提供了一个比较复杂的接口...

PKjason
2013/07/15
0
1

没有更多内容

加载失败,请刷新页面

加载更多

Android进阶(四):Activity启动过程(最详细&最简单)

1.前言 最近一直在看 《Android进阶解密》 的一本书,这本书编写逻辑、流程都非常好,而且很容易看懂,非常推荐大家去看看(没有收广告费,单纯觉得作者写的很好)。 上一篇简单的介绍了And...

天王盖地虎626
38分钟前
0
0
DLA SQL技巧:行、列转换和JSON数据列展开

1. 简介 在数据库SQL处理中,常常有行转列(Pivot)和列转行(Unpivot)的数据处理需求。本文以示例说明在Data Lake Analytics(https://www.aliyun.com/product/datalakeanalytics)中,如何...

阿里云云栖社区
43分钟前
0
0
docker入门

第一步、安装docker 这里给出阿里云的docker安装步骤 https://help.aliyun.com/document_detail/51853.html?spm=a2c4g.11186623.6.820.RaToNY 注意:docker需要linux内核在3.10以上才可以安装...

嘴角轻扬30
43分钟前
2
0
容器中的JVM资源该如何被安全的限制?

前言 Java与Docker的结合,虽然更好的解决了application的封装问题。但也存在着不兼容,比如Java并不能自动的发现Docker设置的内存限制,CPU限制。 这将导致JVM不能稳定服务业务!容器会杀死你...

xiaomin0322
51分钟前
6
0
mysql查询最近连续登录和累计登录

这条sql写了一天,百度无数,终于摸到点门路 需求是查询从当前日期向前推的连续登录,比如一个用户他今天登录了,昨天没登,连续登录为1 他昨天前天都登录了,今天没登录,连续登录为0 SELEC...

七月大人
53分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部