python的urllib2库

import urllib2

  1. 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()
  1. 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)
  1. 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)

你可能感兴趣的:(python的urllib2库)