使用 urllib 构造请求对象

(1) urllib.request.urlopen()方法可以实现最基本请求的发起,但这几个简单的参数并不足以构建一个完整的请求
(2) 我们可以使用 urllib.request.Request() 先构造一个请求对象,这个请求对象可以包含请求头信息,或者包含要向服务器传递的数据,然后再发送请求
(3) 语法:urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False,method=None)
(4) 其中 url 是要请求的URL,这是必传参数,其他都是可选参数;data 是要向服务器传递的数据,headers 用来构造请求头信息,method 用来指定请求方法

import urllib.parse
import urllib.request

url = "http://www.baidu.com/"

headers = {    //定义请求头信息,通常只定义 User-Agent,其他请求头信息可以通过 F12 界面查看
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
}

postdata = {   //定义要向服务器传递的数据
    'wd': 'hello',
}

data = bytes(urllib.parse.urlencode(postdata), encoding='utf8')                     //把要传递的数据转换成字节流编码格式
request = urllib.request.Request(url, data=data, headers=headers, method='POST')    //构造一个请求对象,指定使用POST方式发起请求
response = urllib.request.urlopen(request)                                          //最后再使用urlopen()发送请求对象
print(response.read().decode('utf-8'))

 

 

 

 

 

 

     

posted @ 2019-03-14 16:14  孔雀东南飞  阅读(480)  评论(0编辑  收藏  举报