我是 Scrapy 的新手,我正在尝试使用 CrawlSpider 从文本文件中抓取多个站点。但是,我想限制每个站点的抓取深度以及每个网站再次抓取的页面总数。不幸的是,当 start_urls 和 allowed_domains 属性设置时 response.meta['depth'] 似乎总是为零(当我试图抓取单个站点时不会发生这种情况)。在设置文件中设置 DEPTH_LIMIT 似乎根本没有做任何事情。当我删除初始化定义并简单地设置 start_urls 和 allowed_domains 事情似乎工作正常。这是代码(抱歉缩进 - 这不是问题):
class DownloadSpider(CrawlSpider):
name = 'downloader'
rules = (
Rule(SgmlLinkExtractor(), callback='parse_item', follow=True),
)
def __init__(self, urls_file, N=10):
data = open(urls_file, 'r').readlines()[:N]
self.allowed_domains = [urlparse(i).hostname.strip() for i in data]
self.start_urls = ['http://' + domain for domain in self.allowed_domains]
def parse_start_url(self, response):
return self.parse_item(response)
def parse_item(self, response):
print response.url
print response.meta['depth']
这导致 response.meta['depth'] 始终等于 0,并且 cralwer 仅抓取 start_urls 的每个元素的第一个站点(即它不跟随任何链接)。所以我有两个问题 1)如何在 start_urls 中将每个站点的爬网限制为一定的深度2)如何限制每个站点的爬网总数,而不管深度如何
谢谢 !