【问题标题】:python url parsing 'function' object has no attribute 'urlparse'python url解析'function'对象没有属性'urlparse'
【发布时间】:2017-04-06 17:04:47
【问题描述】:

尝试解析我用 scrapy 获得的 url

def parse_info_has_id(self, css_path):
    profileID = ""
    for div in css_path.xpath('div'):
        url = "".join(div.css('div > a::attr(href)').extract())
        if "add_friend.php?id" in url:
            print(url)
            #parsed = urlparse.urlparse(url)
            #print urlparse.parse_qs(parsed.query)['id']

    return profileID

这会打印出来

/a/mobile/friends/add_friend.php?id=100003669247258&hf=search&sld=eyJzZWFyY2hfc2lkIjoiNGYxMmNhZGJhZDVkOGQ5ZGFkN2RkZTdhYjc3MTMwNTQiLCJxdWVyeSI6IjIwMjM2MDg3OTciLCJzZWFyY2hfdHlwZSI6IlNlYXJjaCIsInNlcXVlbmNlX2lkIjoxOTg2MTg0OTIzLCJwYWdlX251bWJlciI6MSwiZmlsdGVyX3R5cGUiOiJTZWFyY2giLCJlbnRfaWQiOjEwMDAwMzY2OTI0NzI1OCwicG9zaXRpb24iOjAsInJlc3VsdF90eXBlIjoyMDQ4fQ%3D%3D&gfid=AQB03j5V7CqqGQSD/graphsearch/100003669247258/photos-of?ent=100003669247258&refid=0&query=2023608797&sld=eyJzZWFyY2hfc2lkIjoiNGYxMmNhZGJhZDVkOGQ5ZGFkN2RkZTdhYjc3MTMwNTQiLCJxdWVyeSI6IjIwMjM2MDg3OTciLCJzZWFyY2hfdHlwZSI6IlNlYXJjaCIsInNlcXVlbmNlX2lkIjoxOTg2MTg0OTIzLCJwYWdlX251bWJlciI6MSwiZmlsdGVyX3R5cGUiOiJTZWFyY2giLCJlbnRfaWQiOjEwMDAwMzY2OTI0NzI1OCwicG9zaXRpb24iOjAsInJlc3VsdF90eXBlIjoyMDQ4fQ%3D%3D&source=pivot

我想从字符串中获取 id = 100003669247258 但是当我尝试时

#parsed = urlparse.urlparse(url)
#print urlparse.parse_qs(parsed.query)['id']

我收到 'function' object has no attribute 'urlparse' 错误,我如何解析该 url 字符串以从 add_friend.php?id=10000366924725/graphsearch/100003669247258/ 获取 id

【问题讨论】:

  • 什么是import语句?
  • from urlparse import urljoin, parse_qs ,urlparse
  • 你应该使用函数 urlparse 本身,只要它被导入:parsed = urlparse(url)。 parse_qs 也是一样。

标签: python string parsing url scrapy


【解决方案1】:

你可以使用

import urllib.parse as urlparse

【讨论】:

    【解决方案2】:

    您可以将 urlparse 导入为:

    from urlparse import urlparse

    或者你也可以从 urllib 导入:

    from urllib import parse as urlparse

    【讨论】:

      【解决方案3】:

      将库导入为:

      from urlparse import urlparse
      

      使用方法为:

      urlparse(url)
      

      代替:

      urlparse.urlparse(url)
      

      【讨论】:

        【解决方案4】:

        如果您的目标是只从字符串中获取 id,您可以使用 re 来实现。

        import re
        match_object =  re.search("id=(\d+)", "/a/mobile/friends/add_friend.php?id=100003669247258&hf=search&sld=eyJzZWFyY2hfc2lkIjoiNGYxMmNhZGJhZDVkOGQ5ZGFkN2RkZTdhYjc3MTMwNTQiLCJxdWVyeSI6IjIwMjM2MDg3OTciLCJzZWFyY2hfdHlwZSI6IlNlYXJjaCIsInNlcXVlbmNlX2lkIjoxOTg2MTg0OTIzLCJwYWdlX251bWJlciI6MSwiZmlsdGVyX3R5cGUiOiJTZWFyY2giLCJlbnRfaWQiOjEwMDAwMzY2OTI0NzI1OCwicG9zaXRpb24iOjAsInJlc3VsdF90eXBlIjoyMDQ4fQ%3D%3D&gfid=AQB03j5V7CqqGQSD/graphsearch/100003669247258/photos-of?ent=100003669247258&refid=0&query=2023608797&sld=eyJzZWFyY2hfc2lkIjoiNGYxMmNhZGJhZDVkOGQ5ZGFkN2RkZTdhYjc3MTMwNTQiLCJxdWVyeSI6IjIwMjM2MDg3OTciLCJzZWFyY2hfdHlwZSI6IlNlYXJjaCIsInNlcXVlbmNlX2lkIjoxOTg2MTg0OTIzLCJwYWdlX251bWJlciI6MSwiZmlsdGVyX3R5cGUiOiJTZWFyY2giLCJlbnRfaWQiOjEwMDAwMzY2OTI0NzI1OCwicG9zaXRpb24iOjAsInJlc3VsdF90eXBlIjoyMDQ4fQ%3D%3D&source=pivot")
        id = match_object.group(1)
        print id
        

        【讨论】:

          猜你喜欢
          • 2016-05-04
          • 2016-12-08
          • 2021-05-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-07-21
          • 2020-05-21
          • 2019-08-13
          相关资源
          最近更新 更多