Scrapy(CrawlSpider的使用)

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