import urllib2
- urllib2.urlopen([ url ], data, timeout)
url:可以是一个字符串,也可以是一个Request对象
data:提交的参数
timeout:以秒为单位
A:字符串
response = urllib2.urlopen('http://www.baidu.com')
html = response.read()
B:Request对象
request = urllib2.Request('http://www.baidu.com')
response = urllib2.urlopen(request)
html = response.read()
- urllib2.Request([ url ], data, headers, origin_req_host, unverifiable)
data:
post提交的数据,数据应该是缓存在一个标准的application/x-www-form-urlencode格式中,
urllib.urlencode()用映射或二元组返回一个这种格式的字符串
即post发送的数据需要被以标准的格式进行编码
headers:
字典类型,也可使用add_header(key, value)方法添加
origin_req_host:
RFC2965定义的源交互的request-host
默认的取值是cookielib.request_host(self)
这是由用户发起的原始请求的主机名或ip地址
例如:
如果请求的是一个HTML文档中的图像,这应该是包含该图像的页面请求的request-host
unverifiable:
代表请求是否是无法验证的,由RFC2965定义,默认false
一个无法验证的请求:
某用户的URL没有足够的权限来被接受
例如:
如果请求的是在HTML文档中的图像,但是用户没有自动抓取图像的权限,则该值为true
A:
url = 'http://www.test.com/'
values = {
'name' : 'Michael Foord',
'location' : 'Northampton',
'language' : 'Python'
}
data = urllib.urlencode(values)
req = urllib2.Request(url, data, headers)
response = urllib2.urlopen(req)
html = response.read()
B:
生成Request对象时,已经初始化header,可利用add_header支架
req = urllib2.Request(url)
req.add_header('Referer', 'http://python.org/')
response = urllib2.urlopen(req)
C:
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
opener.open(url)
- urllib2.build_opener 和 urllib2.install_opener
创建opener
opener = urllib2.build_opener()
不调用urllib2.install_opener 使用open方法
opener.open(url)
调用urllib2.install_opener后,使用urllib2.urlopen方法
urllib2.install_opener(opener)
urllib2.urlopen(url)