将爬行限制为单个域
我们可以通知 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 上的内容。 此代码将阻止移动到这些外部站点。