嗨,我想使用 Scrapy CrawlSpider 类(此处的文档)抓取网页的所有页面。
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) 所以,这个蜘蛛将从 start_urls 中定义的页面:www.abc.com 开始,它会自动进行解析......然后跟随 www.abc.com 中的每个链接统治对吗?我想知道有没有办法让我只能刮一定数量的层..说只刮第一层(直接来自www.abc.com的链接)?
(2) 因为我在 allowed_deomains 中定义了只有 abc.com url 会被抓取。所以我不需要在规则中重新定义?并做这样的事情:
Rule(SgmlLinkExtractor(allow=('item\.php', )), allow_domains="www.abc.com", callback='parse_item')
(3)如果我使用crawlspider,如果没有在spider类中定义规则会怎样?它会爬取所有页面吗?或者它甚至不会遵循任何一个规则,因为规则没有被“满足”?