python-标准库urllib模块

1. python标准库urllib模块

  • urllib库用于访问URL。

  • urllib包含以下类:

    • urllib.request打开和读取URL

    • urllib.error包含urllib.request抛出的异常

    • urllib.parse用于解析URL

    • urllib.robotparser用于解析robots.txt文件

  • 用的最多是urllib.request 类,它定义了适用于在各种复杂情况下打开URL,例如基本认证、重定向、Cookie、代理等。

  • urllib的request方法

    from urllib import request
    res = request.urlopen("http://www.ctnrs.com")
    

    res是一个HTTPResponse类型的对象,包含以下方法和属性:

    方法 描述
    getcode() 获取响应的HTTP状态码
    geturl() 返回真实URL。有可能URL3xx跳转,那么这个将获得跳转后的URL
    headers 返回服务器header信息
    read(size=-1) 返回网页所有内容。size正整数指定读取多少字节
    readline(limit=-1) 读取下一行。size正整数指定读取多少字节
    readlines(hint=0, /) 列表形式返回网页所有内容,以列表形式返回。sizehint正整数指定读取多少字节
  • 示例

    • 示例1、自定义用户代理

      from urllib import request
      url = "http://www.ctnrs.com"
      user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
      header = {"User-Agent": user_agent}
      req = request.Request(url, headers=header)
      res = request.urlopen(req)
      print(res.getcode())
      
    • 示例2、向接口提交用户数据

      from urllib import request, parse
      url = "http://www.ctnrs.com/login"
      post_data = {"username":"user1","password":"123456"}
      post_data = parse.urlencode(post_data).encode("utf8") #将字典转为URL查询字符串格式,并转为bytes类型
      req = request.Request(url, data=post_data, headers=header)
      res = request.urlopen(req)
      print(res.read())