Python_urllib模块
原创
©著作权归作者所有:来自51CTO博客作者风中木偶的原创作品,请联系作者获取转载授权,否则将追究法律责任
urllib模块中的方法:
urllib.urlopen(url[,data[,proxies]])
打开一个url的方法,返回一个文件对象,然后可以进行类似文件对象的操作。本例试着打开google
复制代码
import urllib
f = urllib.urlopen('http://www.baidu.com/')
firstLine = f.readline() #读取html页面的第一行
urlopen返回对象提供方法:
- read() , readline() ,readlines() , fileno() , close() :这些方法的使用方式与文件对象完全一样
- info():返回一个httplib.HTTPMessage对象,表示远程服务器返回的头信息
- getcode():返回Http状态码。如果是http请求,200请求成功完成;404网址未找到
- geturl():返回请求的url
实例:
import urllib
google = urllib.urlopen('http://www.google.com')
print 'http header:\n', google.info()
print 'http status:', google.getcode()
print 'url:', google.geturl()
for line in google: # 就像在操作本地文件
print line,
google.close()
urllib.urlretrieve(url[,filename[,reporthook[,data]]])
urlretrieve方法将url定位到的html文件下载到你本地的硬盘中。如果不指定filename,则会存为临时文件。
urlretrieve()返回一个二元组(filename,mine_hdrs)
#coding:utf-8
import urllib
#下载 http://www.baidu.com html内容到c:/test.log文件
filename = urllib.urlretrieve('http://www.baidu.com','c:/test.log')
#下载 http://www.baidu.com/img/bd_logo1.png 图片到c:/下,并命名为1.png
img = urllib.urlretrieve('http://www.baidu.com/img/bd_logo1.png','c:/1.png')
print filename
print img
输出:
('c:/test.log', <httplib.HTTPMessage instance at 0x024C81E8>)
('c:/1.png', <httplib.HTTPMessage instance at 0x024A5378>)
urllib.urlcleanup()
清除由于urllib.urlretrieve()所产生的缓存
urllib.quote(url)和urllib.quote_plus(url)
将url数据获取之后,并将其编码,从而适用与URL字符串中,使其能被打印和被web服务器接受。
import urllib
url = urllib.quote('http://www.baidu.com')
print url
#输出:'http%3A//www.baidu.com'
url = urllib.quote_plus('http://www.baidu.com')
print url
#输出:'http%3A%2F%2Fwww.baidu.com'
urllib.unquote(url)和urllib.unquote_plus(url)
与urllib.quote(url)和urllib.quote_plus(url)相反。
urllib.urlencode(query)
将URL中的键值对以连接符&划分
注意该方法无法再转成键值对数据
这里可以与urlopen结合以实现post方法和get方法:
GET方法:
import urllib
params=urllib.urlencode({'spam':1,'eggs':2,'bacon':0})
print params
# 输出 'eggs=2&bacon=0&spam=1'
f=urllib.urlopen("http://python.org/query?%s" % params)
print f.read()
POST方法:
import urllib
parmas = urllib.urlencode({'spam':1,'eggs':2,'bacon':0})
f=urllib.urlopen("http://python.org/query",parmas)
f.read()