Python的urllib和urllib2模块都做与请求URL相关的操作,但他们提供不同的功能。他们两个最显著的差异如下:

urllib2可以接受一个Request对象,并以此可以来设置一个URL的headers,但是urllib只接收一个URL。这意味着,你不能伪装你的用户代理字符串等。
urllib模块可以提供进行urlencode的方法,该方法用于GET查询字符串的生成,urllib2的不具有这样的功能。这就是urllib与urllib2经常在一起使用的原因。
常用方法和类

  1. urllib2.urlopen(url[, data][, timeout])

url参数可以是一个字符串url,也可以是一个Request对象。
对于可选的参数timeout,阻塞操作以秒为单位,如尝试连接(如果没有指定,将使用设置的全局默认timeout值)。实际上这仅适用于HTTP,HTTPS和FTP连接。
timeout参数在urlopen中传入。
Timeout 设置

urlopen 方法第三个参数就是 timeout 的设置,可以设置等待多久超时,为了解决一些网站实在响应过慢而造成的影响。

例如下面的代码,如果第二个参数 data 为空那么要特别指定是 timeout 是多少,写明形参,如果data已经传入,则不必声明。

import urllib2
response = urllib2.urlopen('http://www.baidu.com', timeout=10)
import urllib2
response = urllib2.urlopen('http://www.baidu.com',data, 10) 
  1. urllib2.Request类
    class urllib2.Request(url[, data][, headers][, origin_req_host][, unverifiable])
    URL——是一个字符串,其中包含一个有效的URL。
    data——是一个字符串,指定额外的数据发送到服务器,如果没有data需要发送可以为“None”。目前使用data的HTTP请求是唯一的。当请求含有data参数时,HTTP的请求为POST,而不是GET。数据应该是缓存在一个标准的application/x-www-form-urlencoded格式中。urllib.urlencode()函数用映射或2元组,返回一个这种格式的字符串
import urllib
import urllib2
url = 'http://www.someserver.com/cgi-bin/register.cgi'
values = {'name' : 'Michael Foord','location' : 'Northampton','language' : 'Python' }#values字典
data = urllib.urlencode(values)#urrllib.urlencode()函数用映射或二元组,返回标准格式的字符串
req = urllib2.Request(url, data)#传入data
response = urllib2.urlopen(req)
the_page = response.read()

headers——是字典类型,头字典可以作为参数在request时直接传入,也可以把每个键和值作为参数调用add_header()方法来添加。

import urllib
import urllib2
url = 'http://www.someserver.com/cgi-bin/register.cgi'
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
values = {'name' : 'Michael Foord','location' : 'Northampton','language' : 'Python' }
headers = { 'User-Agent' : user_agent }##伪装主机的headers
data = urllib.urlencode(values)
req = urllib2.Request(url, data, headers)#headers传入Request类
response = urllib2.urlopen(req)
the_page = response.read()

origin_req_host——是RFC2965定义的源交互的request-host。默认的取值是cookielib.request_host(self)。这是由用户发起的原始请求的主机名或IP地址。例如,如果请求的是一个HTML文档中的图像,这应该是包含该图像的页面请求的request-host。
unverifiable ——代表请求是否是无法验证的,它也是由RFC2965定义的。默认值为false。一个无法验证的请求是,其用户的URL没有足够的权限来被接受。例如,如果请求的是在HTML文档中的图像,但是用户没有自动抓取图像的权限,unverifiable的值就应该是true。

urllib和urllib2的区别和使用相关推荐

  1. urllib和urllib2的区别(很全面详细!)

    文章摘自:https://www.cnblogs.com/wly923/archive/2013/05/07/3057122.html urllib与urllib2的学习总结(python2.7.X) ...

  2. python的httplib、urllib和urllib2的区别及应用

    urllib 和urllib2都是接受URL请求的相关模块,但是urllib2可以接受一个Request类的实例来设置URL请求的headers,urllib仅可以接受URL.这意味着,你不可以伪装你 ...

  3. Py之urllib2:Python库之urllib、urllib2、urllib3系列简介、安装、使用方法之详细攻略

    Py之urllib2:Python库之urllib.urllib2.urllib3系列简介.安装.使用方法之详细攻略 目录 urllib2简介 urllib2安装 urllib2使用方法 urllib ...

  4. python2.7下的urllib和urllib2

    python最恶心的地方就在于它的版本和配置了,特别是安装第三方包的时候经常会出现莫名其妙的错误,又不懂. 所以只能不断的切来切去的. 今天学习python爬虫,其中Python2.7使用了urlli ...

  5. python urllib2模块安装,Python urllib和urllib2模块学习(二)

    一.urllib其它函数 前面介绍了 urllib 模块,以及它常用的 urlopen() 和 urlretrieve()函数的使用介绍.当然 urllib 还有一些其它很有用的辅助方法,比如对 ur ...

  6. urllib和urllib2区别

    urllib和urllib2区别 urllib和urllib2区别: Python的urllib和urllib2模块都做与请求URL相关的操作,但他们提供不同的功能.他们两个最显着的差异如下: 总结1 ...

  7. urllib、urllib2、urllib3 和 requests 模块有什么区别?

    问: 在 Python 中,urllib.urllib2.urllib3 和 requests 模块有什么区别?为什么有三个?他们似乎在做同样的事情- 答1: HuntsBot周刊–不定时分享成功产品 ...

  8. Python urllib、urllib2、urllib3用法及区别

    简介1 在可供使用的网络库中,urllib和urllib2可能是投入产出比最高的两个,是Python中操作url的官方标准库.它们让你能够通过网络访问文件,就像这些文件位于你的计算机中一样.只需一个简 ...

  9. urllib,urllib2,urllib3区别

    python3中也有urllib和urllib3两个库,其中urllib几乎是python2.7中urllib和urllib2两个模块的集合,所以我们最常用的urllib模块,而urllib3则作为一 ...

最新文章

  1. IIS 之 添加绑定域名 或 设置输入IP直接访问网站
  2. Spring Countries在Apusic上部署
  3. 我的工具箱(不定期更新,欢迎跟帖推荐)
  4. 4个mos管驱动的全桥电路原理_最经典MOS管电路工作原理及详解没有之一
  5. python创建多个txt文件-python-在目录中创建多个文本文件的字数字...
  6. 【算法学习笔记】二叉树的基本操作实现和应用举例,根据先序与中序遍历建立二叉树的实现
  7. Python基础概念_3_操作符与表达式
  8. tp5缓存在html怎么用,tp5.1缓存Cache的使用
  9. 基于Tensorflow实现多层感知机网络MLPs
  10. 内存管理之智能指针shared_ptr
  11. 适用于5G网络的SAF Spectrum Compact 频谱仪
  12. 沉睡者IT - 月赚几千的创业项目思路,抖音文案号网赚项目
  13. CentOS 6.5 ZIP、RAR文件压缩解压操作详解
  14. 【解读】山香科技:互联网从软件革命到移动革命
  15. c语言设计思路和有点不足,C语言总结报告
  16. mysql 导入导出 csv_学习 MySQL中导入 导出CSV
  17. 分享74个ASP整站程序源码,总有一款适合您
  18. 资金流学习-成本分析
  19. Android中的线程
  20. 一起来看新浪的NBA图文直播摆乌龙

热门文章

  1. pdf文件转换ppt可编辑_创建,转换和编辑PDF文件的免费工具
  2. 用OpenCV计算图像的亚像素值
  3. 电脑绘图软件有哪些可以简单使用的?
  4. 从零开始学做机器人——入门书籍资料
  5. 浏览器手动设置Cookie
  6. python创建目录\文件夹
  7. int转换成char
  8. Excel 正则表达式的用法
  9. 上海亚商投顾:沪指失守3300点 卫星导航概念全天强势
  10. 研华PCI板卡开发(4)快速入门(4)轴操作