引入:CrawlSpider是Scrapy提供的一个通用Spider。在Spider里,我们可以指定一些爬取规则来实现页面的提取,这些爬取规则由一个专门的数据结构Rule表示。Rule里包含提取和跟进页面的配置,Spider会根据Rule来确定当前页面中的哪些链接需要继续爬取、哪些页面的爬取结果需要用哪个方法解析等。
1.CrawlSpider的基本工作原理
CrawlSpider的基本工作原理和BasicSpider雷同。不同点在于获取响应对象后,通过链接提取器LinkExtractor获取请求链接,如果提取规则中配置了follow=True即跟进,则将提取的请求url链接传递给调度器,然后循环发送请求。如果follow=False,将不再发送请求。跟进的过程中有可能出现请求重复发送,Scrapy框架默认会过滤重复请求
2.链接提取器和提取规则
链接提取器是从scrapy.http.Response对象中提取链接的对象。在Scrapy中,有内置提取器,如 scrapy.linkextractors import LinkExtractor 。链接提取器有多个,每个链接提取器都有一个名为 extract_links 的公共方法,其中包含一个Response对象并返回一个scrapy.link.Link对象列表。链接提取器只能实例化一次,并多次调用extract_links方法以提取具有不同响应的链接。CrawlSpider类使用链接提取器和一组规则,其主要目的是提取链接。 默认情况下,链接提取器是LinkExtractor,其功能与LxmlLinkExtractor相同。是一个高度推荐的链接提取器,因为它具有方便的过滤选项,使用LXML库强大的HTMLParser的解析器
emmm意思就是在Scrapy里又一个提取每个网页连接的东西,有一个大家都认可的名字extract_links.
3.CrawlSpider创建方法
CrawlSpider模板文件也是通过命令“scrapy genspider
”生成,与生成basicspider模板文件的不同的是需要增加参数“-t crawl”。
因为我之前是爬取了一个人邮书籍的所以这里我也直接在这个项目创建了文件。方便对比两个的操作。