crawl spider爬虫
一、创建方法
在创建爬虫的时候scrapy genspider -t crawl 爬虫名 网址范围
二、结构介绍
与普通spider的区别
创建出来的spider继承自CrawlSpider
多了rules字段,根据正则表达式来匹配,结果给到不同的回调方法
回调方法的名改成了parse_item。名字可以随便改,parse函数不见了
Rule对象
常见参数
Rule(LinkExtractor(allow=),callback,follow)匹配到的url可以是不完整的,crawlspider会自动补全
LinkExtractor:提取url地址用的对象
callback:给到方法。不是必须的
follow:表示当前url的响应是否还会经过rules来提取,也不是必须,默认是false,一般要翻页的话就要True,是否需要跟进(话句话说,此次判断以后的页面在一次回调函数以后还需要回调,往往是翻页以后进入详情页,如果是翻页以后不进入详情页了自然就不用),递归
其他参数
process_link:指定该spider中哪个函数将会被调用,从link_extractor中获取到链接列表时将会调用该函数,该方法主要用来过滤url
process_request:指定该spider中哪个函数将会被调用,该规则提取到每个request时都会调用该函数,用来过滤request
别的完全一样,类似于django的re_path()
三、思路总结
对页面中所有url进行分类,分类规则为正则,主要分成详情页类,翻页类等等,然后使用Rule对象将url请求给到callback指定的函数,函数中进行xpath或者其他方式来提取字段
四、关于链接提取器LinkExtractor
LinkExtractor常见参数
allow:满足的url会被匹配,如果为空就是全部匹配
deny:满足括号中正则表达式的URL一定不会被提取(优先级高于allow)
allow_domains:会被提取链接的domains
deny_domains:一定不会被提取链接的domains
restrict_xpaths:使用xpath,与allow共同过滤
Tips:
CrawlspIder中不能再有以 parse为名字的数据提取方法,这个方法被 CrawlSpider用来实现基础ur提取等功能
CrawlSpider只是给到了一种正则匹配分类的方式,大大减少工作量。他的实现方式依旧可以是多种的,还是可以自定义yield生成请求传参。而且同样是Rules请求构建参数的时候由于是并发执行,是不能传递参数的
不指定callback函散的请求下,如果follow为True,满足该rule的ur还会继续被请求
如果多个Rule都满足某一个url,会从rules中选择第一个满足的进行操作,满足一个rules以后就不能满足更多的rules了,所以要明确一点
Comments NOTHING