【问题标题】:How to parse parameters in a URL Fragment using Python 3如何使用 Python 3 解析 URL 片段中的参数
【发布时间】:2021-02-06 06:59:45
【问题描述】:

我需要解析大量 URL 以使用 urllib/python3 检索 guid。一些 url 包含一个导致返回参数出现问题的片段。

import urllib

url = "https://zzz.com/index.html#viewer?guid=6a755e6d-4eae&Link=true&psession=true")
parse_response = urllib.parse.urlsplit(self.url)
self.logger.info("The parsed url components = {}".format(parse_response))

解析后的url组件 = SplitResult(scheme='https', netloc='abc.com', path='/index.html', query='', fragment='viewer?guid=6a755e6d-4eae&Link=true&psession =true')]

所以 urllib 正确地看到了“#”并将 URL 的其余部分存储为片段,并且不会返回参数。处理带有和不带有片段的 URL 的最佳方法是什么?

【问题讨论】:

    标签: python-3.x url urllib


    【解决方案1】:
    from urllib.parse import urlparse, urldefrag, parse_qs
    url = " https://abc.xyz.com/url/with/fragment/query#param1=val1&param2=val2&param3=val3"
    
    print(urlparse(url))
    print(urlparse(url).fragment)
    
    pq = parse_qs(urlparse(url).fragment)
    print(pq)
    print(type(pq))
    print("Using urlparse {}".format((pq["access_token"][0])))
    
    
    f = urldefrag(url).fragment
    print(type(f))
    print(f)
    
    pq = parse_qs(f)
    print(pq)
    print(type(pq))
    print("Using urldefrag {}".format((pq["access_token"][0])))
    

    【讨论】:

      猜你喜欢
      • 2012-09-13
      • 1970-01-01
      • 2012-02-25
      • 2011-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-01
      • 2021-07-31
      相关资源
      最近更新 更多