将爬行限制为单个域

我们可以通知 Scrapy 将爬行限制为仅指定一组域内的页面。 这是一项重要的任务,因为链接可以指向网络上的任何位置,并且我们通常希望控制爬网最终的去向。 Scrapy 使这一切变得非常容易。 需要做的就是设置 scraper 类的 allowed_domains 字段。

如何做

此示例的代码是 06/04_allowed_domains.py。 您可以使用 Python 解释器运行该脚本。 它将执行并生成大量输出,但如果您密切关注它,您会发现它只处理 nasa.gov 上的页面。

工作原理

该代码与以前的 NASA 网站爬虫相同,只是我们包含 allowed_domains=['nasa.gov']:

class Spider(scrapy.spiders.SitemapSpider):
    name = 'spider'
    sitemap_urls = ['https://www.nasa.gov/sitemap.xml']
    allowed_domains=['nasa.gov']

    def parse(self, response):
        print("Parsing: ", response)

NASA 网站与其根域相当一致,但偶尔会有指向其他网站的链接,例如 boeing.com 上的内容。 此代码将阻止移动到这些外部站点。