Scrapy中CrawlSpider from scrapy.linkextractors import LinkExtractor from scrapy.spiders import CrawlSpider,Rule class CsdnspiderSpider(CrawlSpider):->继承自spiders的crawlspider类 name='csdnspider! allowed_domains = ['blog.csdn.net'] starturls=['http://blog.csdn.net/peoplelist.html?channelid=0&page=1'] -->第一次会请求的url,如果对这个url有特殊的需求, 可以定义一个parse start_url函数专门处理这个url 所对应的响应 rules =( Rule(LinkExtractor(allow=r'http://blog.csdn.net/\w+$'),follow=True) -->能够找到所有作者的博客地址并且请求, $符号加上表示已\w结尾,否则会匹配上\w+'/abc/def'等内容 Rule(LinkExtractor(allow=rpeoplelist.html?channelid=\d+&page=\d+$'),follow=True), -->找到所有的翻页地址并且请求,$符号同理 Rule(LinkExtractor(allow=r'/article/details/\d+$'),callback="parse article",follow=True) -->找到所有的文章的url地址,并且请求,调用parasearticle函数处理response Rule(LinkExtractor(allow=r'/article/list/\d+$'),follow=True) -->找到所有的博客文章列表的翻页地址并且请求 )
LinkExtractor更多常见参数: allow:满足括号中“正则表达式”的URL会被提取,如果为空,则全部匹配。 deny:满足括号中“正则表达式”的URL一定不提取(优先级高于allow)。 allow domains:会被提取的链接的domains。 deny domains:一定不会被提取链接的domains。 restrict xpaths:使用xpath表达式,和allow共同作用过滤链接,级xpath满足范围内的url地址会被提取 spiders.Rule常见参数: link extractor:是一个LinkExtractor对象,用于定义需要提取的链接。 callback:从linkextractor中每获取到链接时,参数所指定的值作为回调函数 follow:是一个布尔(boolean)值,指定了根据该规则从response提取的链接是否需要跟进。 如果callback为Nonefollow默认设置为True,否则默认为False。 processlinks:指定该spider中哪个的函数将会被调用,从linkextractor中获取到链接列表时将会调用该函数 该方法主要用来过滤url。 process request:指定该spider中哪个的函数将会被调用,该规则提取到每个request时都会调用该函数, 用来过滤request