【问题标题】:Delete certain ajax call from URL从 URL 中删除某些 ajax 调用
【发布时间】:2019-05-17 15:04:00
【问题描述】:

我刚开始使用 python 进行网络抓取,我遇到了一个问题。

我正在浏览https://upplysing.se的各个页面,并且需要从分页按钮的href中擦除某个部分。 href的结构如下:

https://upplysning.se/person/?x=1204&where=Sveav%e4gen+Stockholm&m=1&sl=detail&page=2

我需要从 url 中删除 &sl=detail 部分,但不完全了解如何执行此操作。谁能指出我正确的方向?

【问题讨论】:

    标签: python regex web-scraping


    【解决方案1】:

    你可以用这个

    import urllib.parse as urlparse
    url = 'https://upplysning.se/person/?x=1204&where=Sveav%e4gen+Stockholm&m=1&sl=detail&page=2'
    parsed = urlparse.urlparse(url)
    
    url = url.replace('&sl='+urlparse.parse_qs(parsed.query)['sl'][0],'')
    print(url)#prints https://upplysning.se/person/?x=1204&where=Sveav%e4gen+Stockholm&m=1&page=2
    

    【讨论】:

    • 谢谢它的工作!尽可能接受答案。
    • 编辑:这个模块把URL中的特殊字符弄乱了,导致url无效,所以很遗憾它不起作用
    • @PerrivandenBerghe 我已经更新了你可以使用的代码
    【解决方案2】:

    您可以最大限度地使用 urllib 并将整个 url 分解为多个部分,删除 sl 部分,然后重新组合整个:

    def remove_url_query_arg(urlstring, argname):
    
      url = urlparse(urlstring)
      query = url.query
      args = parse_qsl(query)
    
      clean_args = [(k, v) for k, v in args if k != argname]
    
      clean_query = urlencode(clean_args)
      clean_url = urllib.parse.ParseResult(
        scheme=url.scheme,
        netloc=url.netloc,
        path=url.path,
        params=url.params,
        fragment=url.fragment,
        query=clean_query)
    
      return urlunparse(clean_url)
    

    这留下了在它所属的 url 字符串中提取和插入内容的知识。

    【讨论】:

    • 感谢您的回答,对 python 还是很陌生,但这样的事情帮助我越来越了解它:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 2022-01-10
    • 2011-12-05
    • 1970-01-01
    • 2018-11-03
    相关资源
    最近更新 更多