美文网首页Python
Python urllib-parse模块

Python urllib-parse模块

作者: 大狗熊熊熊熊熊 | 来源:发表于2022-07-31 18:29 被阅读0次
    urllib.parse模块定义的函数有两大类别分别为《解析类别》和《转码类别》
    《解析类别有》
    1.urllib.parse.urlparse 《分割urlparse里指定的URL,将其分割为scheme,netloc,params,query,fragment,可设置fragment参数指定是否显示fragment》
      例:
      result = urllib.parse.urlparse("https://www.jianshu.com/writer#/notebooks/52963477/notes/104310197/preview")
      result2 = urllib.parse.urlparse("https://www.jianshu.com/writer#/notebooks/52963477/notes/104310197/preview",allow_fragments=False)
      print(result,result2)
      result输出
      scheme='https', netloc='www.jianshu.com', path='/writer', params='', query='', fragment='/notebooks/52963477/notes/104310197/preview'
      result2输出
      scheme='https', netloc='www.jianshu.com', path='/writer#/notebooks/52963477/notes/104310197/preview', params='', query='', fragment=''
    2.urllib.parse.urlunparse 《与urlparse相反,此函数为构造URL,接受一个可迭代对象,且该对象长度必须为6》
      例:
      url = ['https','www.jianshu.com','writer','','','/notebooks/52963477/notes/104310197/preview']
      result = urllib.parse.urlunparse(url)
      print(result)
    3.urllib.parse.urlsplit 《与urlparse类似,但params对象和path对象一同显示》
    4.urllib.parse.urlunsplit 《与urlunparse类似,但接受的可迭代对象长度必须为5,缺少了parmas对象》
    5.urllib.parse.urljoin 《合并基准URL和参数URL》
      例:
      print(urllib.parse.urljoin("https://www.baidu.com","s?wd=%E7%96%91%E6%90%AD%E8%BD%BD%E4%BD%A9%E6%B4%9B%E8%A5%BF%E9%A3%9E%E6%9C%BA%E6%B6%88%E5%A4%B1%E5%9C%A8%E5%A4%A7%E4%BC%97%E8%A7%86%E7%BA%BF&sa=fyb_n_homepage&rsv_dl=fyb_n_homepage&from=super&cl=3&tn=baidutop10&fr=top1000&rsv_idx=2&hisfilter=1"))
      print(urllib.parse.urljoin("https://www.baidu.com/s?wd=%E7%96%91%E6%90%AD%E8%BD%BD%E4%BD%A9%E6%B4%9B%E8%A5%BF%E9%A3%9E%E6%9C%BA%E6%B6%88%E5%A4%B1%E5%9C%A8%E5%A4%A7%E4%BC%97%E8%A7%86%E7%BA%BF&sa=fyb_n_homepage&rsv_dl=fyb_n_homepage&from=super&cl=3&tn=baidutop10&fr=top1000&rsv_idx=2&hisfilter=1","https://baike.baidu.com/item/%E5%8D%97%E5%B8%8C%C2%B7%E4%BD%A9%E6%B4%9B%E8%A5%BF/11038248"))
      print(urllib.parse.urljoin("https://www.baidu.com/s?wd=%E7%96%91%E6%90%AD%E8%BD%BD%E4%BD%A9%E6%B4%9B%E8%A5%BF%E9%A3%9E%E6%9C%BA%E6%B6%88%E5%A4%B1%E5%9C%A8%E5%A4%A7%E4%BC%97%E8%A7%86%E7%BA%BF&sa=fyb_n_homepage&rsv_dl=fyb_n_homepage&from=super&cl=3&tn=baidutop10&fr=top1000&rsv_idx=2&hisfilter=1","/s?wd=佩洛西访亚洲行程公布%20未提台湾&usm=1&ie=utf-8&rsv_pq=c70cbd19000aa88c"))
      print(urllib.parse.urljoin("https://baike.baidu.com/item/%E5%8D%97%E5%B8%8C%C2%B7%E4%BD%A9%E6%B4%9B%E8%A5%BF/11038248","/item/%E5%91%A8%E6%9D%B0%E4%BC%A6/129156?fr=aladdin"))
      第一个输出https://www.baidu.com/s?wd=%E7%96%91%E6%90%AD%E8%BD%BD%E4%BD%A9%E6%B4%9B%E8%A5%BF%E9%A3%9E%E6%9C%BA%E6%B6%88%E5%A4%B1%E5%9C%A8%E5%A4%A7%E4%BC%97%E8%A7%86%E7%BA%BF&sa=fyb_n_homepage&rsv_dl=fyb_n_homepage&from=super&cl=3&tn=baidutop10&fr=top1000&rsv_idx=2&hisfilter=1
      第二个输出https://baike.baidu.com/item/%E5%8D%97%E5%B8%8C%C2%B7%E4%BD%A9%E6%B4%9B%E8%A5%BF/11038248
      第三个输出https://www.baidu.com/s?wd=佩洛西访亚洲行程公布%20未提台湾&usm=1&ie=utf-8&rsv_pq=c70cbd19000aa88c
      第四个输出https://baike.baidu.com/item/%E5%91%A8%E6%9D%B0%E4%BC%A6/129156?fr=aladdin
    6.urllib.parse.parse_qs 《解析字符串参数返回字典形式数据》
      例:
      segmentation = urllib.parse.urlparse("https://www.baidu.com/s?wd=%E9%98%BF%E5%A7%A81%E4%B8%AA%E6%9C%88%E4%BA%A4%E5%BE%8020%E5%A4%9A%E5%90%8D%E7%94%B7%E5%AD%90%E8%AE%A9%E4%B9%B0%E6%B0%B4%E6%9E%9C")
      query = segmentation.query
      strQuery = urllib.parse.parse_qs(query)
      print(strQuery)
      输出{'wd': ['阿姨1个月交往20多名男子让买水果']}
    7.urllib.parse.parse_qsl 《解析字符串参数返回字段名和字段值对列表形式数据》
      例:
      segmentation = urllib.parse.urlparse("https://www.baidu.com/s?wd=%E9%98%BF%E5%A7%A81%E4%B8%AA%E6%9C%88%E4%BA%A4%E5%BE%8020%E5%A4%9A%E5%90%8D%E7%94%B7%E5%AD%90%E8%AE%A9%E4%B9%B0%E6%B0%B4%E6%9E%9C")
      query = segmentation.query
      strQuery = urllib.parse.parse_qsl(query)
      print(strQuery)
      输出[('wd', '阿姨1个月交往20多名男子让买水果')]
    
    《转码类别有》
    1.urllib.parse.urlencode 《转为ASCII 文本字符串》
      例:
      params = {"ie":"UTF-8","wd":"字节串"}
      baseUrl = "https://www.baidu.com/s?"
      finalUrl = urllib.parse.urljoin(baseUrl,urllib.parse.urlencode(params))
      finalUrl2 = baseUrl+urllib.parse.urlencode(params)
      print(finalUrl)
      print(finalUrl2)
      第一个输出https://www.baidu.com/ie=UTF-8&wd=%E5%AD%97%E8%8A%82%E4%B8%B2
      第二个输出https://www.baidu.com/s?ie=UTF-8&wd=%E5%AD%97%E8%8A%82%E4%B8%B2
    2.urllib.parse.quote 《将文本字符串转换为字节码》
    3.urllib.parse.unquote 《与urllib.parse.quote正相反》
      例:
      url = "https://www.baidu.com/s?wd=%E9%B8%BF%E6%98%9F%E5%B0%94%E5%85%8B%E5%86%8D%E6%8D%901%E4%B8%AA%E4%BA%BF&sa=fyb_n_homepage&rsv_dl=fyb_n_homepage&from=super&cl=3&tn=baidutop10&fr=top1000&rsv_idx=2&hisfilter=1"
      segmentation = urllib.parse.urlparse(url)
      segmentationStr = segmentation.query.split("&")[0].split("=")[1]
      finalStr = urllib.parse.unquote(segmentationStr)
      print(finalStr)
      finalStr2 = urllib.parse.quote(finalStr)
      print(finalStr2)
      第一个输出:鸿星尔克再捐1个亿
      第二个输出:%E9%B8%BF%E6%98%9F%E5%B0%94%E5%85%8B%E5%86%8D%E6%8D%901%E4%B8%AA%E4%BA%BF
    

    相关文章

      网友评论

        本文标题:Python urllib-parse模块

        本文链接:https://www.haomeiwen.com/subject/vtgkwrtx.html