requests库urllib.request库的对比:
requests库中的get请求或其他方式的请求
import requests
url = "https://www.baidu.com/s"
params = "wd=中国" # 查询字符串的方式,不需要像urllib那样还要进行url编码,request请求中的parmas会自动被编码
# params ={"wd":"中国"} # 也可直接传入一个字典格式的
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36"}
# 发送请求,若要发送POST请求,只需要requests.post(...)
res = requests.get(url, verify=False, headers=headers, params=params)
print(res.text) # 返回的是一个文本字符串,这个是requests根据猜测进行的解码,有时会有乱码,那就必须使用如下输出字节流方式解码
print(res.content) # 返回的是一个字节流数据,可以使用res.content.decode("utf-8")方式进行解码
urllib.request库中的get或其他方式的请求:
from urllib import request
url = "https://maoyan.com/"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36"}
rq = request.Request(url,headers=headers)
# Request类下面的get_method()方法默认只要有data数据就是post请求,也可以使用如下这种方式更改请求方式
rq.get_method = lambda :"GET" # 若是没有data数据,则默认是get,就不需要此处代码,此处演示如何修改请求方式使用的
print(rq.get_method(),type(rq.get_method()))
res = request.urlopen(rq)
print(res.read().decode(),type(res.read()),sep="\n")