# 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,callbackfollow
  • 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 crawlspider的使用

通过crawlspider爬取腾讯招聘的详情页的招聘信息,url:http://hr.tencent.com/position.php (opens new window)

思路分析:

  1. 列表页翻页

    定义一个规则,来进行列表页的翻页,follow需要设置为True,列表页url地址的规律如下

    xcooo
  2. 详情页翻页

    定义一个规则,实现从列表页进入详情页,并且指定回调函数

    xcooo
  3. 详情页数据的提取

    在详情页url地址对应的回调函数中,实现数据提取

    xcooo

# 2.4 crawlspider使用的注意点

xcooo

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

xcooo

# 小结

  • 本小结重点
    • 掌握crawlspider创建爬虫的命令
    • 掌握crawlspider中规则的编写
    • 掌握Rule中callback和follow的使用方式
上次更新: 2020/10/15 下午8:49:48