python学习笔记三(网络编程初步)

来源:互联网 发布:冰球队员贾克斯淘宝 编辑:程序博客网 时间:2024/05/16 10:44

最近有些最基础python爬虫的需求,也就是打开个网页,正则匹配想要的字符串。在使用的过程中有些糊涂,对urllib、urllib2、httplib等模块分不清楚,要是加上代理的话就更不明白了。今天抽时间看了下这部分的东西,简单的总结下。

很多工具书上面讲这部分内容的时候都带上socket,跟C代码差不多,鉴于和最近需求不搭边,先跳过这部分,有机会再深入研究。

1、urllib

dir()查看了下该模块提供的方法,平时用到的估计只有quote、urlencode、urlopen、urlretrieve

前两个是对url编码的,具体来讲quote函数是对字符串编码;urlencode函数则是对一个字典进行编码,通常和urllib2结合使用。具体用法后面贴代码。

urlopen和urlretrieve函数则是操作远程文件的(貌似本地的也可以),urlopen简单理解为打开文件,urlretrieve则可以将远程文件下载到本地

# encoding: UTF-8 import urllibdef cbk(p1,p2,p3):    print p3    per = 100.0 * p1 * p2 / p3    if per > 100:        per = 100    print '%.2f%%' % perurl = 'http://www.baxdu.com'google = urllib.urlopen(url)print google.read()urllib.urlretrieve(url,'e:\\baidu.html',cbk)
urlretrieve第三个参数为一个回调函数,当连接上服务器、以及相应的数据块传输完毕的时候会触发该回调。

2、urllib2

该模块个人觉得很强大,直接贴代码。

# encoding: UTF-8 import urllib,urllib2import cookielibdata = {    'key1':12,    'key2':'test'}payload = urllib.urlencode(data)headers= {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}url = 'http://www.xxx.com/'cookie_support = urllib2.HTTPCookieProcessor(cookielib.CookieJar())proxy_support = urllib2.ProxyHandler({"http":"http://12.33.44.5.:80/"})opener = urllib2.build_opener(cookie_support, proxy_support)# urllib2.install_opener(opener)request = urllib2.Request(url, payload, headers=headers)dataRes = opener.open(request, timeout=10).read()print dataRes
该模块可以post数据、设置cookie、添加代理等,这些功能是urllib所没有的。但是urlencode还得urilib提供,貌似python3.0后就将这两个合并了。

3、其他

本来打算写下httplib和httplib2的,感觉这部分不怎么会用到了,那这次就不略过。另外有一个urlparse的模块,感觉还不错。网络编程还有其他东西,得边学变积累了。

0 0
原创粉丝点击