python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python的urllib与urllib2模块

Python中urllib与urllib2模块的变化与使用详解

作者:FLy_鹏程万里

urllib是python提供的一个用于操作URL的模块,在python2.x中有URllib库,也有Urllib2库,在python3.x中Urllib2合并到了Urllib中,我们爬取网页的时候需要经常使用到这个库,需要的朋友可以参考下

什么是urllib

urllib是python提供的一个用于操作URL的模块,在python2.x中有URllib库,也有Urllib2库,在python3.x中Urllib2合并到了Urllib中,我们爬取网页的时候需要经常使用到这个库。

升级合并之后,模块中包的位置变化的地方比较多。在此,我们总结并为大家列举一些常见的位置变动,方便之前用python2.x的朋友在使用python3.x的时候可以快速的掌握,其他的在用到的时候再具体为大家讲解。

常见的变化有:

以上是对urllib相关模块中从python2.x到python3.x的常见的一些变动,如果之前使用的是python2.x版本或者在网上阅读关于python2.x的代码,可以根据以上对应关系写出python3.x程序

urllib与urllib2函数库使用说明

(1)def urlopen(url,data=None,proxies=None)

参数说明:

返回值说明:urlopen返回一个类文件对象,该类文件有如下方法:

代码实例:

#encoding:utf-8
import urllib
baidu=urllib.urlopen('http://www.baidu.com')
print "http header:\n",baidu.info()
print 'http status:\n',baidu.getcode()
print 'url:\n',baidu.geturl()
for i in baidu:
    print(i)
baidu.close()

运行结果:

(2)def urlretrieve(url, filename=None, reporthook=None, data=None)

参数说明:

我们可以任意定义该函数的行为,只需要保证函数有三个参数:

data:向指定的URL发送的数据字符串,Get和Post都可以,但是必须符合标准格式:

key1=value1&key2=value2..........

函数返回值:返回一个元组(filename,headers),filename为参数总的filename,header为从服务器传回来的MIME的类型。

实例:

#encoding:utf-8
import urllib
def do(a,b,c):
    """回调函数
    @a: 已经下载的数据块
    @b: 数据块的大小
    @c: 远程文件的大小
    """
    per = 100.0 * a * b / c    
    if per > 100:    
        per = 100    
    print '%.2f%%' % per
url='http://www.baidu.com'
local="I:\python\StoreData\hello.html"
urllib.urlretrieve(url,local,do)

运行结果显示:

(3)其他函数

import urllib
data = 'name = ~a+3'
data1 = urllib.quote(data)
print data1  # result: name%20%3D%20%7Ea%2B3
print urllib.unquote(data1)  # result: name = ~a+3
data2 = urllib.quote_plus(data)
print data2  # result: name+%3D+%7Ea%2B3
print urllib.unquote_plus(data2)  # result: name = ~a+3
data3 = urllib.urlencode({'name': 'dark-bull', 'age': 200})
print data3  # result: age=200&name=dark-bull
data4 = urllib.pathname2url(r'd:/a/b/c/23.php')
print data4  # result: ///D|/a/b/c/23.php
print urllib.url2pathname(data4)  # result: D:/a/b/c/23.php

运行结果:

urllib、urllib2代码实战测试

(1)简单读取网页信息

#coding:utf-8
import  urllib
response=urllib.urlopen('http://www.baidu.com')
print response.read()

运行结果:

到此这篇关于Python中urllib与urllib2模块的变化与使用详解的文章就介绍到这了,更多相关Python的urllib与urllib2模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文