Python

Python urllib-parse模块

2022-07-31  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读