urllib2 使用
Sep 17 2014基础用法
urllib2
是用来发送http请求,获取响应数据的库。基础用法:
import urllib2
# urlopen返回类文件对象,可选参数data与请求头header
response = urllib2.urlopen('http://bozpy.sinaapp.com', [data, [header]])
body = response.read() # 类文件对象有与文件对象类似的方法,read,readline等
heade = response.info() # 获取响应的头,字典
url = response.geturl() # 获取响应的真实url,如果有重定向,url会改变
上例的请求为GET
请求,如果需要带QueryString
,要先编码。
import urllib
url = 'http://bozpy.sinaapp.com/'
data = {'page': 2}
full_url = url + '?' + urllib.urlencode(data) # urllib.urlencode() 数据编码
# 'http://bozpy.sinaapp.com/?page=2'
urlopen
方法中不带data
是请求为GET
,带data
请求则为POST
。
response = urllib2.urlopen('http://bozpy.sinaapp.com', urllib.urlencode(data))
request head
类型为字典。可用于定义User-Agent
。
定制request
import urllib2, urllib
r = urllib2.Request(url, [data, [header]]) # 返回Request实例
r.add_header(k, v) # 添加请求头
r.add_data(urllib.urlencode(data)) # 添加数据
response = urllib2.urlopen(r)
关于cookie
import urllib2, cookielib
cj = cooklib.CookieJar() # cookie处理对象
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) # 生成opener,注册cj
response = opener.open(url) # 发送request,如果response带有cookie则存到cj上
opener.open(otherurl) # 再请求是自动带上cookie
urllib
import urllib
urllib.quote(str) # 转义字符串用于url中
urllib.unquote(str) # 反转
其它
昨天写了两个小工具,所有这里总结下用到的urllib2库。
postEntry.py 通过文件发文章到Boz
player.py XBMC小工具