urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
该方法用来进行发起请求url,返回的结果是一个http.client.HTTPRequest对象。
参数: url:可以是一个url的字符串/Request对象
data:是bytes类型的数据,作为post请求时的数据(方法:urllib.parse.urlencode(字典对象).encode('utf-8'))
timeout:设置请求超时时间,单位是秒
urllib.request.Request(url,data=None,headers=[],origin_req_host=None,unverifiable=False,method=None)
Request类用来构建一个更加完整的请求(请求中可以添加请求头、请求指定的方式等)。
参数: url:是一个url的字符串
data:与urlopen()方法相同
headers:指定发起请求的头部信息,是一个字典。还可以使用Request对象的add_header()方法添加请求头。
method:指定HTTP请求的方式,GET、POST、DELETE、PUT等
origin_req_host:指定请求方的host名称/ip地址
urllib.request.build_opener(handlers)
该方法创建一个opener对象,参数handlers用来构建更多功能的请求(使用代理、cookie等)。
参数:handlers(即处理器),是一个类。所有的handlers都是urllib.request.BaseHandler类的子类,该类提供了最基本的handler的方法。
handlers的例子:
1、ProxyHandler:为请求设置代理
2、HTTPCookieProcessor:处理http请求中的cookie
3、HTTPRedirectHandler:处理http重定向
urllib.request.install_opener(opener)
该方法会安装一个opener实例,作为全局默认的opener。即当使用urllib.request.urlopen()方法时,会使用创建的opener,而不是使用默认的自带的opener---安装后,才能有更多的请求的处理功能。(使用opener的open()方法时,不需要安装全局opener也会有更多的请求的处理功能)