如何使用Python仅爬网特定域?

时间:2016-04-06 16:06:09

标签: python-2.7 beautifulsoup web-crawler

我需要从域开始并从站点中提取所有链接,然后继续并从这些链接中提取链接。但是,我只应该遍历属于给定域的链接。我使用的是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。'开头。有没有更简单的方法来检查链接是否指向新域名?

1 个答案:

答案 0 :(得分:0)

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

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

<form action="/life/life_contract/contract_output/" method="post">{% csrf_token %}
    {% for field in form %}
        <div class="float" id="form_fields">{{field}}{{field.label}}</div><br />
    {% endfor %}
    <input type="submit" value="Submit" />
</form>