requests库urllib.request库的对比

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")

requests库urllib.request库的对比_第1张图片

你可能感兴趣的:(python测试开发,python,python)