urllib模块与requests模块

想问一下师傅们,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。

  • 这篇博客也许可以解决你的问题👉 :导入urllib.request模块会报错
  • 除此之外, 这篇博客: python标准库—urllib,用于处理url请求中的 1.request模块(网路请求) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 基本用法
    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返回结果

    1. 直接将整个页面以二进制格式返回给某个变量:context_bytes=reponse.read()
    2. 直接将整个页面以二进制格式返回给某个列表:context_list_bytes=response.readlines()
    3. 直接将整个页面以二进制格式返回给某个列表:context_bytes=response.readline()
    4. 获取请求状态码: status_code=response.getcode(); 200(请求成功)404(url不存在)504(服务不可用)
    5. 获取网页响应头:headers=response.getheaders()
    6. 获取url:url=response.geturl()
    7. response_info=response.info();获取状态码以及头部信息

    处理read的结果

    • 转码二进制: context_str=context_bytes.decode()
    • 下载到本地文件: file=file.write(context_bytes)