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。

复制代码 代码如下:

proxy=ProxyHandler({'http':'http://someproxy.com:8080'})

auth=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})

本文标题: urllib2自定义opener详解

本文地址: http://www.cppcns.com/jiaoben/python/104814.html

python中的opener_urllib2自定义opener详解相关推荐

  1. Python中的select、epoll详解

    Python中的select.epoll详解 文章目录 Python中的select.epoll详解 一.select 1.相关概念 2.select的特性 1.那么单进程是如何实现多并发的呢??? ...

  2. python平方数迭代器_对python中的高效迭代器函数详解

    python中内置的库中有个itertools,可以满足我们在编程中绝大多数需要迭代的场合,当然也可以自己造轮子,但是有现成的好用的轮子不妨也学习一下,看哪个用的顺手~ 首先还是要先import一下: ...

  3. python中pandas安装视频教程_详解Python中pandas的安装操作说明(傻瓜版)

    很多人来问我pandas的安装(python数据分析里面的必修课) 步骤如下: 安装python的时候,把路径加到系统里,这样,随时可以用pip 路径添加方法: 查找路径: 路径1: 2.例如: 即: ...

  4. Python中random模块生成随机数详解

    Python中random模块生成随机数详解 本文给大家汇总了一下在Python中random模块中最常用的生成随机数的方法,有需要的小伙伴可以参考下 Python中的random模块用于生成随机数. ...

  5. python中plt定义,对Python中plt的画图函数详解

    1.plt.legend plt.legend(loc=0)#显示图例的位置,自适应方式 说明: 'best' : 0, (only implemented for axes legends)(自适应 ...

  6. python中selenium模块驱动谷歌详解

    python中selenium模块驱动谷歌详解 Selenium的介绍.配置和调用 Selenium(浏览器自动化测试框架) 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中 ...

  7. python中的subprocess.Popen()使用详解---以及注意的问题(死锁)

    从python2.4版本开始,可以用subprocess这个模块来产生子进程,并连接到子进程的标准输入/输出/错误中去,还可以得到子进程的返回值. subprocess意在替代其他几个老的模块或者函数 ...

  8. python中的True 和 False详解

    python中的True 和 False详解 参考 [1] https://docs.python.org/3/library/stdtypes.html#truth 中的Truth Value Te ...

  9. python中xlrd模块的使用详解

    python中xlrd模块的使用详解 两个问题: 什么是xlrd模块? 为什么使用xlrd模块? 1.什么是xlrd模块? python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读 ...

最新文章

  1. 胜过iPhone XS?Google Pixel的“夜视功能”是怎样炼成的
  2. js正则表达式语法大全_一条正则表达式闹的乌龙
  3. OVS vswitchd启动(三十七)
  4. Redis 命令--Redis列表(List))
  5. ios 一步一步学会自定义地图吹出框(CalloutView)--(百度地图,高德地图,google地图)
  6. caffe基础(8):draw_net.py绘制网络结构
  7. jena fuseki RDF应用
  8. python同时输出多个值_python如何实现输出多个值?
  9. 在linux中解压.tgz
  10. python kotlin_用Java和Python模仿Kotlin构建器
  11. 小学奥数 7649 我家的门牌号 python
  12. java join yield_Java多线程中join、yield、sleep方法详解
  13. 面试准备——Java回顾:基础编程(基本语法、面向对象、异常处理)
  14. Raki的读paper小记:A Unified MRC Framework for Named Entity Recognition
  15. beini安装破*WIFI
  16. Android串口编程入门
  17. java 菱形_java空心菱形
  18. speedoffice文档中怎么删除页眉页脚
  19. 拨开零售电商数字化转型迷雾,电商RPA应用揭秘
  20. 二手书店APP软件开发定制

热门文章

  1. day25.1-汇编和C的移位指令
  2. 贝壳扫地机器人_6千的扫地机器人是否值得买?有戴森手持的家,使用NEATO D7的体验及选购建议...
  3. Flink Standalone部署模式
  4. 有意思的MyHeritage
  5. 记:解决阿里云服务器挖矿程序恶意进程
  6. Android开发-根据起点终点实现直线逐点绘制动画-01
  7. Dota中卡尔技能总数的组合数量
  8. 大数据早报:缺乏有效辟谣机制怎么办?人工智能狙击网络谣言 95后大数据报告出炉:兴趣决定一切(9.15)
  9. WebSocket——vue3简易聊天室
  10. 在github上面创建属于自己的个性主页