• 主页

  • 投资

  • IT

    🔥
  • 设计

  • 销售

关闭

返回栏目

关闭

返回python栏目

94 - 第三方库 - urllib3 - 请求库

作者:

贺及楼

成为作者

更新日期:2024-10-28 10:04:13

urllib3

urllib3库的简介

Python 的 urllib3 库是一个强大的HTTP客户端库,用于发送HTTP请求和处理HTTP响应。它提供了连接池、文件上传、会话管理等功能,支持HTTP/1.1、连接复用和持久连接。urllib3 还提供了多种异常类型,用于处理请求过程中可能出现的错误。它是许多高阶HTTP客户端库的基础,如 requests 库,用于实现更复杂的网络通信和数据传输任务。

安装请求库 urllib3 命令

  1. pip install urllib3

pip安装urllib3

使用请求库 urllib3 例子

  1. import urllib3
  2. import json
  3. http = urllib3.PoolManager()
  4. http = urllib3.PoolManager(timeout=3.0) # 让所有的request都遵循一个timeout限时
  5. # 创建PoolManager对象生成请求,
  6. # 由该实例对象处理与线程池的连接以及线程安全的所有细节
  7. def req(url):
  8. try:
  9. # url
  10. url = url
  11. # 请求头
  12. # header = {
  13. # 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64)',
  14. # 'Host':'httpbin.org'
  15. # }
  16. # body
  17. # 请求体
  18. data = {
  19. 'word':'hello'
  20. }
  21. data = json.dumps(data).encode()
  22. # json.dumps方法可以将python对象转换为json对象
  23. # body
  24. # 二进制文件
  25. # with open('xxx.jpg','rb') as f2:
  26. # data = f2.read()
  27. # fields
  28. # 使用multipart/form-data编码方式上传文件
  29. # 可以使用和传入Form data数据一样的方法进行
  30. # 并将文件定义为一个元组的形式
  31. # (file_name,file_data):
  32. # with open('1.txt','r+',encoding='UTF-8') as f:
  33. # file_read = f.read()
  34. # request(self, method, url, fields=None, headers=None, **urlopen_kw)
  35. response = http.request('GET', url) # get方式请求
  36. response = http.request('POST', url, body=data, headers=header)
  37. response = http.request('POST', url, body=data, headers=header, timeout=3.0) # 限时
  38. response = http.request('POST', url, body=data, headers=header, retries=5) # 重试,默认3次
  39. response = http.request('POST', url, body=data, headers=header, redirect=False) # 重定向
  40. response = http.request('POST', url, fields={'filefield':('1.txt', file_read, 'text/plain')})
  41. response_status = response.status
  42. response_data = response.data.decode('utf-8')
  43. print(response_status) # 获得状态码
  44. print(response_data) # html源码(utf-8解码)
  45. text = json.loads(response_data)
  46. # 如果返回 {"msg":"ok"}
  47. msg = text["msg"]
  48. print(msg)
  49. except:
  50. print("失败")
  51. print(response_status)
  52. raise
  53. def run():
  54. try:
  55. url = ""
  56. r = req(url)
  57. print(r)
  58. except:
  59. print(r)
  60. if __name__ == "__main__":
  61. run()