想问一下师傅们,python的urllib模块与requests模块,对get请求和post请求中的参数url的处理有什么区别
该回答引用ChatGPT
urllib 和 requests 都是 Python 的 HTTP 库,它们对 GET 请求和 POST 请求中 URL 参数的处理有一些差异。
请参考下面的解释,如果觉得不错,还请点击采纳!
在 urllib 中,你可以使用 urllib.parse 模块中的 urlencode() 函数将参数编码为 URL 编码,并将其作为 GET 请求的一部分添加到 URL 中。对于 POST 请求,参数通常作为请求的数据体发送。
而在 requests 中,你可以使用请求的 params 参数将 GET 请求的参数添加到 URL 中,而不需要手动编码。对于 POST 请求,可以使用 data 或 json 参数将请求的数据体发送。
总的来说,requests 模块比 urllib 更易于使用,因为它具有更简洁和人性化的 API。
基本用法
response=
urllib.request.urlopen(url,data=None,[timeout,]*,cafile=None,capath=None,cadefault=False,
context=None)
参数介绍:
url:网页地址
data: {}, 默认为 data=None,表示get请求;若传递改参数,则表格post请求
timeout:请求超时时间,秒为单位
cafile 与capath :CA证书和路径,
context:ssl.SSLContext类型,用来指定 SSL 设置
cadefault:默认为False,现弃用
代码示例:
进阶用法
step1:
myRequest=urllib.request.Request(url,data=None,headers{},origin_req_host=None,unverifiable=False,method=None)
step2:response=urllib.request.urlopen(myRequest)
headers:通过urllib发送的请求会有一个默认的Headers:
“User-Agent”:“Python-urllib/3.6”,指明请求是由urllib发送的。所以遇到一些验证User-Agent的网站时,需要我们自定义Headers把自己伪装起来。
headers = {
#伪装一个火狐浏览器
“User-Agent”:‘Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)’,
“host”:‘httpbin.org’ }
处理urlopen返回结果
- 直接将整个页面以二进制格式返回给某个变量:context_bytes=reponse.read()
- 直接将整个页面以二进制格式返回给某个列表:context_list_bytes=response.readlines()
- 直接将整个页面以二进制格式返回给某个列表:context_bytes=response.readline()
- 获取请求状态码: status_code=response.getcode(); 200(请求成功)404(url不存在)504(服务不可用)
- 获取网页响应头:headers=response.getheaders()
- 获取url:url=response.geturl()
- response_info=response.info();获取状态码以及头部信息
处理read的结果