urllib and urllib2 and httplib

http://www.cnblogs.com/sysu-blackbear/p/3629420.html

http://www.cnblogs.com/wly923/archive/2013/05/07/3057122.html

标记: 2015-06-25  笔记内容整理和更新到51cto

之前使用python中,访问页面网站时,都是使用curl, 再被supprocess的方式,真的很笨.

req = "curl --max-time 5 --connect-timeout 5 -o /dev/null -s -w %{time_total},%{http_code} " + url + " -H host:" + cname

result = subprocess.Popen(req, shell=True, stdout=subprocess.PIPE)

stdout,stderr = result.communicate()

后来才发现原来还有urlib urllib2 httplib等python定义模块, 逐渐加入到使用中.

数据来源: http://www.hacksparrow.com/python-difference-between-urllib-and-urllib2.html

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

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

urllib2 can accept a Request object to set the headers for a URL request, urllib accepts only a URL. That means, you cannot masquerade your User Agent string etc.

urllib provides the urlencode method which is used for the generation of GET query strings, urllib2 doesn‘t have such a function. This is one of the reasons why urllib is often used along with urllib2.

urllib 模块提供urlencode方法,可以键值对内容进行封装处理, post请求内容. 而urlib2则没有此方法.  如果需要post字段串, 则需要使用httplib方法.

urllib.urlopen 操作对象仅为url地址,而urlib2.urlopen操作对象可以是一个Request对象,参数可以为URL地址,键值对post数据, header关字段.

httplib 则为原始请求链接, 经常链接申请, 请求内容(类似urllib2.urlopen功能, postdata数据可以为非键值对内容),链接断开.

线上例子

#需要对网站CMS链接实时推送到百度站长平台,实现自动提交主动推送功能.
#filecontent为推送内容,一个URL字段为一行
#domain 为域名 这两个参数都会直接传入到baidu接口
#网上curl ruby php方法,以下自己写的python实现
#不能使用urllib.urlencode封装数据,再使用urllib2.Request组装请求
#必须使用httplib对象去封装请求,body内容为  
def postBaiDu(filecontent, domain):
        URL = "/urls?site=%s&token=%s" % (domain,othertoken)
        send_headers = {‘Content-Type‘ : ‘text/plain‘}
        conn = httplib.HTTPConnection(baiduurl)
        #req = urllib2.Request(URL, data=data, headers=send_headers)
        conn.request(method="POST", url=URL, body=filecontent, headers=send_headers)
        response = conn.getresponse()
        baiduresult = response.read()
        conn.close()
        return baiduresult
时间: 2024-10-09 22:53:57

urllib and urllib2 and httplib的相关文章

httplib,urllib和urllib2

一.httplib实现了HTTP和HTTPS的客户端协议,一般不直接使用,在python更高层的封装模块中(urllib,urllib2)使用了它的http实现. import httplib conn = httplib.HTTPConnection("google.com") conn.request('get', '/') print conn.getresponse().read() conn.close() httplib.HTTPConnection ( host [ , 

python中urllib, urllib2,urllib3, httplib,httplib2, request的区别

permike原文python中urllib, urllib2,urllib3, httplib,httplib2, request的区别 若只使用python3.X, 下面可以不看了, 记住有个urllib的库就行了 python2.X 有这些库名可用: urllib, urllib2, urllib3, httplib, httplib2, requests python3.X 有这些库名可用: urllib, urllib3, httplib2, requests 两者都有的urllib3

Python:urllib和urllib2的区别(转)

原文链接:http://www.cnblogs.com/yuxc/ 作为一个Python菜鸟,之前一直懵懂于urllib和urllib2,以为2是1的升级版.今天看到老外写的一篇<Python: difference between urllib and urllib2>才明白其中的区别. You might be intrigued by the existence of two separate URL modules in Python -urllib and urllib2. Even

Python库urllib与urllib2有哪些区别

分享下Python库urllib与urllib2用法区别,初学python的同学常有此困惑,今天一揭谜底. 学习Python,一直不明白urllib和urllib2的区别,以为2是1的升级版.今天看到老外写的一篇<Python: difference between urllib and urllib2>才明白其中的区别You might be intrigued by the existence of two separate URL modules in Python -urllib an

[转]Python中urllib与urllib2的区别与联系

引用文章1:http://my.oschina.net/u/558071/blog/144792 引用文章2:http://zhuoqiang.me/python-urllib2-usage.html#proxy 在python中,urllib2并不是urllib的升级版,urllib和urllib2不可相互替代的,urllib一般和urllib2一起搭配使用.整体来说,urllib2是urllib的增强,但是urllib中有urllib2中所没有的函数. urllib2可以用urllib2.o

Python urllib和urllib2模块学习

Python标准库中有许多实用的工具类,但是在具体使用时,标准库文档上对使用细节描述的并不清楚,比如 urllib和urllib2 这个 HTTP 客户端库.这里总结了一些 urllib和urlib2 库的使用细节. Python urllib 库提供了一个从指定的 URL 地址获取网页数据,然后对其进行分析处理,获取想要的数据. 一.urllib常用函数介绍: 1. urlopen()函数:即创建一个类文件对象为指定的 url 来读取. 可以使用help(urllib.urlopen)查看函数

urllib和urllib2的区别及用

首先来看一下他们的区别 urllib和urllib2 urllib2可以接受一个Request类的实例来设置URL请求的headers,urllib仅可以接受URL.这意味着,你不可以通过urllib模块伪装你的User Agent字符串等(伪装浏览器). urllib提供urlencode方法用来GET查询字符串的产生,而urllib2没有.这是为何urllib常和urllib2一起使用的原因. urllib2模块比较优势的地方是urlliburllib2.urlopen可以接受Request

关于urllib、urllib2爬虫伪装的总结

站在网站管理的角度,如果在同一时间段,大家全部利用爬虫程序对自己的网站进行爬取操作,那么这网站服务器能不能承受这种负荷?肯定不能啊,如果严重超负荷则会时服务器宕机(死机)的,对于一些商业型的网站,宕机一秒钟的损失都是不得了的,这不是一个管理员能承担的,对吧?那管理员会网站服务器做什么来优化呢?我想到的是,写一个脚本,当检测到一个IP访问的速度过快,报文头部并不是浏览器的话,那么就拒绝服务,或者屏蔽IP等,这样就可以减少服务器的负担并让服务器正常进行. 那么既然服务器做好了优化,但你知道这是对爬虫

Python——深入理解urllib、urllib2及requests(requests不建议使用?)

深入理解urllib.urllib2及requests            python Python 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年,Python 源代码同样遵循 GPL(GNU General Public License)协议[1] .Python语法简洁而清晰,具有丰富和强大的类库. urllib and urllib2 区别 urllib和urllib2模块都做与请求URL相关的操作,但