CrawlSpider也可以这样用,对每一个提取出的链接都调用某些操作
- 创建项目 scrapy startproject 项目的名字
- 跳转到scrapy文件夹的目录下
- 创建爬虫文件(语句和之前不同)
scrapy genspider -t crawl 爬虫文件的名字 爬取的域名
产生的文件和之前略有区别,还有几个坑要注意。 - 如果网页的分页是像上图一样,_2,_3这样区分的,则需要注意第一页的url!!!
- 正则表达式的点(.)或其他特殊字符可能需要转义,前面加 \ 即可
最简单的CrawlSpider用法如下:
一、CrawlSpider介绍
CrawlSpider继承自scrapy.Spider
CrawlSpider可以定义规则,在解析html内容时,可以根据链接规则提取出指定链接,然后再向这些链接发送请求。(适合用于如果爬取了网页之后,需要提取链接再次爬取的情况)
二、CrawlSpider用法
最常用的三种
- allow = () 提取符合正则表达式的链接
- restrict_xpaths = () 提取符合xpath规则的链接
- restrict_css = () 提取符合选择器规则的链接
三、示例
为方便测试,直接在PyCharm终端输入
scrapy shell +爬取的url
示例代码如下:
利用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)
总结
- 需要先导入 from scrapy.linkextractors import LinkExtractor
- LinkExtractor(allow=r’’)是使用正则表达式检索
- LinkExtractor(restric_xpaths=r’’)是使用xpath语法检索
- LinkExtractor(restrict_css=r’’)是使用选择器规则检索
- restric_xpaths后面有个s!等号后面别忘加r
- 更方便的用法,创建文件时: scrapy genspider -t crawl