跬步 On Coding

urllib2 使用

基础用法

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小工具