(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'))