Python 爬虫学习笔记(十(4))scrapy链接提取器CrawlSpider

CrawlSpider也可以这样用,对每一个提取出的链接都调用某些操作

  • 创建项目 scrapy startproject 项目的名字
  • 跳转到scrapy文件夹的目录下
  • 创建爬虫文件(语句和之前不同)
    scrapy genspider -t crawl 爬虫文件的名字 爬取的域名
    Python 爬虫学习笔记(十(4))scrapy链接提取器CrawlSpider_第1张图片
    产生的文件和之前略有区别,还有几个坑要注意。
  • 如果网页的分页是像上图一样,_2,_3这样区分的,则需要注意第一页的url!!!
  • 正则表达式的点(.)或其他特殊字符可能需要转义,前面加 \ 即可

最简单的CrawlSpider用法如下:

一、CrawlSpider介绍

CrawlSpider继承自scrapy.Spider

CrawlSpider可以定义规则,在解析html内容时,可以根据链接规则提取出指定链接,然后再向这些链接发送请求。(适合用于如果爬取了网页之后,需要提取链接再次爬取的情况)


二、CrawlSpider用法

最常用的三种

  1. allow = () 提取符合正则表达式的链接
  2. restrict_xpaths = () 提取符合xpath规则的链接
  3. restrict_css = () 提取符合选择器规则的链接

三、示例

为方便测试,直接在PyCharm终端输入
scrapy shell +爬取的url
Python 爬虫学习笔记(十(4))scrapy链接提取器CrawlSpider_第2张图片

示例代码如下:

利用allow+正则表达式

scrapy shell https://www.dushu.com/book/1188.html

In [1]: from scrapy.linkextractors import LinkExtractor

In [2]: link = LinkExtractor(allow = r'/book/1188_\d+\.html')

In [3]: link.extract_links(response)

利用restrict_xpaths+xpath语法

In [8]: link1 = LinkExtractor(restrict_xpaths=r'//div[@class="pages"]/a')

In [9]: link1.extract_links(response)


总结

  1. 需要先导入 from scrapy.linkextractors import LinkExtractor
  2. LinkExtractor(allow=r’’)是使用正则表达式检索
  3. LinkExtractor(restric_xpaths=r’’)是使用xpath语法检索
  4. LinkExtractor(restrict_css=r’’)是使用选择器规则检索
  5. restric_xpaths后面有个s!等号后面别忘加r
  6. 更方便的用法,创建文件时: scrapy genspider -t crawl

你可能感兴趣的:(python,爬虫)