目标
- 掌握crawlspider爬虫的创建方式
- 掌握crawlspdier中rules的书写
- 能够通过crawlspider类完成一个爬虫
1 crawlspider是什么
回顾之前的代码中,我们有很大一部分时间在寻找下一页的url地址或者是内容的url地址上面,这个过程能更简单一些么?
思路:
- 从response中提取所有的满足规则的url地址
- 自动的构造自己requests请求,发送给引擎
对应的crawlspider就可以实现上述需求,匹配满足条件的url地址,才发送给引擎,同时能够指定callback函数
2 认识crawlspider爬虫
2.1 创建crawlspdier爬虫的命令
scrapy genspider –t crawl itcast itcast.cn
2.2 观察爬虫内的默认内容
spider中默认生成的内容如下,其中重点在rules中
- rules是一个元组或者是列表,包含的是Rule对象
- Rule表示规则,其中包含
LinkExtractor
,callback
和follow
LinkExtractor
:连接提取器,可以通过正则或者是xpath来进行url地址的匹配callback
:表示经过连接提取器提取出来的url地址响应的回调函数,可以没有,没有表示响应不会进行回调函数的处理follow
:表示进过连接提取器提取的url地址对应的响应是否还会继续被rules中的规则进行提取,True表示会,Flase表示不会
class Itcast1Spider(CrawlSpider):
name = 'itcast1'
allowed_domains = ['itcast.cn']
start_urls = ['http://itcast.cn/']
rules = (
Rule(LinkExtractor(allow=r'Items/'), callback='parse_item', follow=True),
)
def parse_item(self, response):
i = {}
#使用xpath进行数据的提取或者url地址的提取
return i
2.3 crawlspider的使用
通过crawlspider爬取腾讯招聘的详情页的招聘信息,url:http://hr.tencent.com/position.php
思路分析:
-
列表页翻页
定义一个规则,来进行列表页的翻页,follow需要设置为True,列表页url地址的规律如下
-
详情页翻页
定义一个规则,实现从列表页进入详情页,并且指定回调函数
-
详情页数据的提取
在详情页url地址对应的回调函数中,实现数据提取
具体代码实现:https://blog.csdn.net/apollo_miracle/article/details/85015319