【问题标题】:How can I crawl only a particular domain using Python?如何使用 Python 仅抓取特定域?
【发布时间】:2016-04-06 16:06:09
【问题描述】:

我需要从一个域开始并从站点中提取所有链接,然后继续从这些链接中提取链接。但是,我只应该遍历属于给定域的链接。我正在使用 BeautifulSoup。我能想到的唯一方法是测试href是href ='www.someotherdomain.com'的形式还是href ='page1/page2'的形式。前者表示链接指向新域,后者表示链接指向同一域中的页面。

所以我创建了一个名为 has_domain 的函数来检查链接是否已经拥有自己的域。代码如下所示:

def has_domain(url):
    if 'www.' in url:
        return True
    else:
        return False

问题是,并非种子域之外的每个链接都以“www”开头。有没有更简单的方法来检查链接是否指向新域?

【问题讨论】:

  • 欢迎来到 SO。到目前为止,您尝试过什么鳕鱼?展示您的尝试将有助于我们为您提供帮助,同时也表明您为此付出了一些努力。
  • 感谢理查德的回复。我希望我的编辑显示了我的尝试。

标签: python-2.7 beautifulsoup web-crawler


【解决方案1】:

您可以使用 urlparse 获取主机名,然后检查它是否在列表中或直接与字符串进行比较。

这是一个将其与域列表进行比较的示例,请注意它将“www”变体视为不同的域名。

from urlparse import urlparse

url_list = ["example.com", "www.example.com"]

def has_domain(url):
    p = urlparse(url)
    if p.hostname in url_list:
        return True
    else:
        return False

print has_domain("http://www.example.com")

【讨论】:

    猜你喜欢
    • 2020-03-26
    • 2021-12-21
    • 1970-01-01
    • 2020-05-24
    • 1970-01-01
    • 1970-01-01
    • 2018-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多