博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python模块—urllib
阅读量:6151 次
发布时间:2019-06-21

本文共 2778 字,大约阅读时间需要 9 分钟。

1. 网页操作

urllib.urlopen(url[,data[,proxies]])

打开一个url,返回一个文件对象,然后可以进行类似文件对象操作

url:远程数据的路径,即网址

data:表示以GET或者POST方式请求url的数据

proxes:设置代理

urlopen返回对象提供方法:

read() , readline() ,readlines() , fileno() , close() :这些方法的使用方式与文件对象完全一样

info():返回一个httplib.HTTPMessage对象,表示远程服务器返回的头信息

getcode():返回Http状态码。如果是http请求,200请求成功完成;404网址未找到

geturl():返回请求的url

1 >>> import urllib 2 >>> resp = urllib.urlopen("http://www.google.com") 3 >>> read = resp.read()   ######读取整个文件 4 >>> print read 5 ............此处打印整个页面代码,略之.............  6 >>> readline = resp.readline() ######读取一行 7 >>> print readline 8 
Google
View Code

2. 下载

urllib.urlretrieve(url[,filename[,reporthook[,data]]])

urlretrieve方法将url定位到的html文件下载到你本地的硬盘中。如果不指定filename,则会存为临时文件

urlretrieve()返回一个二元组(filename,mine_hdrs),filename表示保存到本地的路径,mine_hdrs返回一个httplib.HTTPMessage实例,表示服务器的响应头

filename:指定了保存到本地的路径(如果未指定该参数,urllib会生成一个临时文件来保存数据)

reporthook:是一个回调函数,当连接上服务器、以及相应的数据块传输完毕的时候会触发该回调。我们可以利用这个回调函 数来显示当前的下载进度
data:指POST或者GET到服务器的数据

1 >>> filename = urllib.urlretrieve('http://www.google.com.hk/')2 >>> type(filename)3 
4 >>> filename[0]5 '/tmp/tmp8eVLjq'6 >>> filename[1]7
临时存放
1 >>> filename = urllib.urlretrieve('http://www.google.com.hk/',filename='/home/dzhwen/python文件/Homework/urllib/google.html')2 >>> type(filename)3 
4 >>> filename[0]5 '/home/dzhwen/python\xe6\x96\x87\xe4\xbb\xb6/Homework/urllib/google.html'6 >>> filename[1]7
保存为本地
1 import urllib 2  3 def cbk(a,b,c): 4     '''回调函数 5     @a: 已经下载的数据块 6     @b: 数据块的大小 7     @c: 远程文件的大小 8     ''' 9     per = 100.0 * a * b / c10     if per > 100:11         per = 10012     print '%.2f%%' % per13 url = 'http://www.sina.com.cn'14 local = '/py/sina.html'15 urllib.urlretrieve(url, local, cbk)
下载进度实例
urllib.urlcleanup()

清除由于urllib.urlretrieve()所产生的缓存

3. 编码与解码

urllib.quote(url)和urllib.quote_plus(url)

将url数据获取之后,并将其编码,从而适用与URL字符串中,使其能被打印和被web服务器接受

1 >>> urllib.quote('http://www.baidu.com')2 'http%3A//www.baidu.com'3 >>> urllib.quote_plus('http://www.baidu.com')4 'http%3A%2F%2Fwww.baidu.com'
View Code
urllib.unquote(url)和urllib.unquote_plus(url)

与urllib.quote(url)和urllib.quote_plus(url)函数相反

urllib.urlencode(query)

将URL中的键值对以连接符&划分

这里可以与urlopen结合以实现get方法和post方法:

1 >>> import urllib2 >>> params=urllib.urlencode({
'spam':1,'eggs':2,'bacon':0})3 >>> params4 'eggs=2&bacon=0&spam=1'5 >>> f=urllib.urlopen("http://python.org/query?%s" % params)6 >>> print f.read()
GET方法
1 >>> import urllib2 >>> parmas = urllib.urlencode({
'spam':1,'eggs':2,'bacon':0})3 >>> f=urllib.urlopen("http://python.org/query",parmas)4 >>> f.read()
POST方法 

补充: 

quote(s, safe='/')

对字符串进行编码,参数safe指定了不需要编码的字符,默认不编码字符/。

pathname2url(pathname)

将本地路径转换为url路经

url2pathname(pathname)

将url路经转换为本地路径

转载于:https://www.cnblogs.com/andr01la/p/5146310.html

你可能感兴趣的文章
Microsoft Licenses Flash Lite for Windows Mobile Users
查看>>
HDOJ 2020 绝对值排序
查看>>
HDOJ/HDU 2560 Buildings(嗯~水题)
查看>>
Maven编译时跳过Test
查看>>
Spring Boot 整合Spring Security 和Swagger2 遇到的问题小结
查看>>
[20170628]12C ORA-54032.txt
查看>>
linux运维人员的成功面试总结案例分享
查看>>
Windows DHCP Server基于MAC地址过滤客户端请求实现IP地址的分配
查看>>
命令查询每个文件文件数
查看>>
《跟阿铭学Linux》第8章 文档的压缩与打包:课后习题与答案
查看>>
RAC表决磁盘管理和维护
查看>>
Apache通过mod_php5支持PHP
查看>>
发布一个TCP 吞吐性能测试小工具
查看>>
java学习:jdbc连接示例
查看>>
PHP执行批量mysql语句
查看>>
Extjs4.1.x 框架搭建 采用Application动态按需加载MVC各模块
查看>>
Silverlight 如何手动打包xap
查看>>
建筑电气暖通给排水协作流程
查看>>
JavaScript面向对象编程深入分析(2)
查看>>
linux 编码转换
查看>>