# 3.5. crawlspider类的使用
# 目标
- 掌握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 = ['xcooo.cn']
start_urls = ['http://xcooo.cn/']
rules = (
Rule(LinkExtractor(allow=r'Items/'), callback='parse_item', follow=True),
)
def parse_item(self, response):
i = {}
#使用xpath进行数据的提取或者url地址的提取
return i
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 2.3 crawlspider的使用
通过crawlspider爬取腾讯招聘的详情页的招聘信息,url:http://hr.tencent.com/position.php (opens new window)
思路分析:
列表页翻页
定义一个规则,来进行列表页的翻页,follow需要设置为True,列表页url地址的规律如下
详情页翻页
定义一个规则,实现从列表页进入详情页,并且指定回调函数
详情页数据的提取
在详情页url地址对应的回调函数中,实现数据提取
# 2.4 crawlspider使用的注意点

# 2.5 crawlspider的补充知识点(了解)

# 小结
- 本小结重点
- 掌握crawlspider创建爬虫的命令
- 掌握crawlspider中规则的编写
- 掌握Rule中callback和follow的使用方式