您好我想使用Scrapy CrawlSpider类(Documentation here)抓取网页的所有页面。
class MySpider(CrawlSpider):
name = 'abc.com'
allowed_domains = ['abc.com']
start_urls = ['http://www.abc.com']
rules = (
Rule(SgmlLinkExtractor(allow=('item\.php', )), callback='parse_item')
)
def parse_item(self, response):
self.log('Hi, this is an item page! %s' % response.url)
...
(1)因此,这个蜘蛛将从页面开始:www.abc.com,它在start_urls中定义,它将自动进行解析......然后按照www.abc.com中的每个链接进行操作遵循规则吧?我想知道是否有一种方法,所以我只能刮一定数量的层...说只刮第一层(链接直接来自www.abc.com)?
(2)因为我在allowed_deomains中定义了只会删除abc.com网址。所以我不需要在规则中重新定义它?并做这样的事情:
Rule(SgmlLinkExtractor(allow=('item\.php', )), allow_domains="www.abc.com", callback='parse_item')
(3)如果我正在使用crawlspider,如果我不在蜘蛛类中定义规则会发生什么?它会抓取所有页面?或者它甚至不会跟随任何一个,因为该规则尚未“满足”?
答案 0 :(得分:3)
设置DEPTH_LIMIT设置:
DEPTH_LIMIT¶
默认值:0
允许为任何网站抓取的最大深度。如果为零, 不会施加任何限制。
不,您不需要添加额外的网址检查。如果您未在allow_domains
级别指定Rule
,则只会提取包含abc.com
域名的网址。
BaseSpider
一样工作)。希望有所帮助。