【问题标题】:slicing a URL ready for get ip by host name切片 URL 准备通过主机名获取 ip
【发布时间】:2018-08-24 12:06:20
【问题描述】:

我试图在这段代码中分割 URL,如果 URL[2] 的前 4 个字符是 www。只需将其添加到新列表中,但如果它们不是 www。然后 URL = www。 + 网址。我遇到的问题是我不断得到像 www.www.google.com 这样的结果。我已经尝试了很多不同的表达方式,但无法正确>请帮助:)

 for i in raw_links:
        raw_links += (scrape_links(i))
        checked += 1
        string = str(checked) + ' links checked'
        print(string)

        for i in raw_links:
            i = i.split('//') and i.split('/')
            url = i[2]
            del i

            if url[0:3] != 'www.':
                top_domain = 'www.' + url
                if not top_domain in checked_links:
                    checked_links += top_domain
                    print(top_domain)
            elif url[0:3] == 'www.':
                checked_links += url
                print(url)
            else:
                del i
                print(raw_links[i],'deleted!!')

【问题讨论】:

  • 使用urllib的urljoin函数
  • 我该怎么做?在哪里做?我是初学者,所以如果可以的话,请更准确:)
  • 请忽略。我误解了你的问题。

标签: python python-3.x web-scraping


【解决方案1】:

很抱歉在评论中有误导性。您所要做的就是改变 if 条件如下。

if not url.startswith('www.'):
    url = 'www.'+url

这肯定会奏效。干杯!

【讨论】:

    【解决方案2】:
    if url[0:3] != 'www.':
    

    总是会触发,因为 url[0:3] 只会返回前三个字符,永远不会等于“www”。因此,您的网址已经以 www 开头。仍然会有www。添加到他们。

    if url[0:3] == 'www.':
    

    永远不会触发(因为它只返回 3 个字符“www”)所以好的 url 以“www”开头。不会添加到您的列表中。

    【讨论】:

      猜你喜欢
      • 2018-01-02
      • 2013-02-17
      • 1970-01-01
      • 2014-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-25
      相关资源
      最近更新 更多