python学习笔记:urllib模块
2015-03-05 00:00
423 查看
摘要: urllib.urlopen
urllib.urlretrieve
urllib模块的作用是:使我们可以像访问本地文件一样读取www和ftp上的数据
调用方法:
urllib模块的方法:
1.urllib.urlopen(url[,data[,proxies]]) 打开一个url,返回一个文件对象,该对象可进行对象的操作。
该指令创建了一个标识远程url的类文件对象。
urllib.urlopen(url[,data[,proxies]])中,参数url表示远程数据的路径,也就是网址。参数data表示以post方式提交到url的数据。参数proxies用于设置代理。
urllib.urlopen(url)返回的类文件,有以下操作方法:
2.urllib.urlretrieve(url,[,filename[,reporthook[,data]]])将远程数据下载到本地。
其中url为路径(可经过正则匹配后)。filename为想要保存的文件名。reporthook为回调函数,当连接上服务器以及相应的数据处理完之后会触发整个回调函数(可用来显示当前进度)
附带一个自己做的爬虫程序如下:
3.urllib.urlcleanup() 清理urllib.rulretrieve造成的缓存
4.urllib.quote(url)和urllib.quote_plus(url) 将url数据获取之后,并将其编码,从而适用与URL字符串中,使其能被打印和被web服务器接受。
5.urllib.unquote(url)和urllib.unquote_plus(url) 作用与4相反
6.urllib.urlencode(query) 将url中的键值对以连接符&划分#这个不太懂,待之后研究了再补充,有了解的朋也欢迎讨论。
urllib.urlretrieve
urllib模块的作用是:使我们可以像访问本地文件一样读取www和ftp上的数据
调用方法:
import urllib
urllib模块的方法:
1.urllib.urlopen(url[,data[,proxies]]) 打开一个url,返回一个文件对象,该对象可进行对象的操作。
page=urllib.urlopen('http://www.zhihu.com/')
该指令创建了一个标识远程url的类文件对象。
urllib.urlopen(url[,data[,proxies]])中,参数url表示远程数据的路径,也就是网址。参数data表示以post方式提交到url的数据。参数proxies用于设置代理。
urllib.urlopen(url)返回的类文件,有以下操作方法:
read() , readline() , readlines() , fileno() , close() #这些方法的使用方式与文件对象完全一样; info()#返回一个httplib.HTTPMessage 对象,表示远程服务器返回的头信息; getcode()#返回Http状态码。如果是http请求,200表示请求成功完成;404表示网址未找到; geturl()#返回请求的url;
2.urllib.urlretrieve(url,[,filename[,reporthook[,data]]])将远程数据下载到本地。
其中url为路径(可经过正则匹配后)。filename为想要保存的文件名。reporthook为回调函数,当连接上服务器以及相应的数据处理完之后会触发整个回调函数(可用来显示当前进度)
附带一个自己做的爬虫程序如下:
<!-- lang: python -->
#!/usr/bin/python
<!-- lang: python -->
#coding:utf-8
<!-- lang: python -->
<!-- lang: python -->
import urllib<!-- lang: python -->
import re
<!-- lang: python -->
<!-- lang: python -->
def getHtml(url):
<!-- lang: python -->
page = urllib.urlopen(url)
<!-- lang: python -->
html = page.read()
<!-- lang: python -->
return html
<!-- lang: python -->
<!-- lang: python -->
def getImg(url):
<!-- lang: python -->
reg="""
<!-- lang: python -->
src="(.*?\.jpg)"
<!-- lang: python -->
"""
<!-- lang: python -->
re_c = re.compile(reg,re.X)
<!-- lang: python -->
imglist = re_c.findall(html)
<!-- lang: python -->
return imglist
<!-- lang: python -->
<!-- lang: python -->
def dwlImg(imglist):
<!-- lang: python -->
<!-- lang: python -->
def cbf(blocknum,blocksize,totalsize):
<!-- lang: python -->
"""
<!-- lang: python -->
回调函数
<!-- lang: python -->
@blocknum : 已经下载的数据块
<!-- lang: python -->
@blocksize: 数据块的大小
<!-- lang: python -->
@totalsize: 远程文件的大小
<!-- lang: python -->
"""
<!-- lang: python -->
percent = 100.0*blocknum*blocksize/totalsize
<!-- lang: python -->
<!-- lang: python -->
if percent > 100:
<!-- lang: python -->
percent = 100
<!-- lang: python -->
print("%.2f%%"% percent)
<!-- lang: python -->
<!-- lang: python -->
x = 0
<!-- lang: python -->
for url in imglist:
<!-- lang: python -->
local = '{}.jpg'.format(x)
<!-- lang: python -->
urllib.urlretrieve(url,local,cbf)
<!-- lang: python -->
x+=1
<!-- lang: python -->
print(url)
<!-- lang: python -->
<!-- lang: python -->
html = getHtml('http://www.zhihu.com/')
<!-- lang: python -->
imglist = getImg(html)
<!-- lang: python -->
print(dwlImg(imglist))
3.urllib.urlcleanup() 清理urllib.rulretrieve造成的缓存
4.urllib.quote(url)和urllib.quote_plus(url) 将url数据获取之后,并将其编码,从而适用与URL字符串中,使其能被打印和被web服务器接受。
>>> urllib.quote('http://www.zhihu.com') 'http%3A//www.zhihu.com' >>> urllib.quote_plus('http://www.zhihu.com') 'http%3A%2F%2Fwww.zhihu.com'
5.urllib.unquote(url)和urllib.unquote_plus(url) 作用与4相反
6.urllib.urlencode(query) 将url中的键值对以连接符&划分#这个不太懂,待之后研究了再补充,有了解的朋也欢迎讨论。
相关文章推荐
- Python标准库学习笔记 urllib模块
- Python学习笔记:Python Language Features
- Boost.Python学习笔记
- Python 学习笔记 - 4.if 表达式
- python文件读写实例学习笔记
- Python 学习笔记(1)
- python(异常处理机制,学习笔记摘要)
- python学习笔记(1)
- python学习笔记,整形,字符串
- Python学习笔记1
- Python学习笔记
- if __name__ (python学习笔记一,注意前面是双下划线)
- python学习笔记(二)
- python学习笔记(2)
- python学习笔记1
- Python学习笔记(一)
- [原创]Ruby学习笔记(4)-闰年、季节和月份天数的Ruby版和Python版
- Python学习笔记 Module
- Python 正则式学习笔记
- Python 学习笔记 - 2.自省