文章目录
前言
现在我们进入一个框架的学习,利用好这个框架,我们可以更快速,更方便的获取到网页上的内容和我们想要的数据。这个框架就是Scrapy框架。
(一)什么是Scrapy
Scrapy是适用于Python的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
(二)基本功能
Scrapy是一个适用爬取网站数据、提取结构性数据的应用程序框架,它可以应用在广泛领域:Scrapy 常应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。通常我们可以很简单的通过 Scrapy 框架实现一个爬虫,抓取指定网站的内容或图片。
(三)基本架构
下面是scrapy框架的官方架构图。绿色箭头为数据流向。
Scrapy Engine(引擎):负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。
Scheduler(调度器):它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。
Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给ScrapyEngine(引擎),由引擎交给Spider来处理。
Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器)。
Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方。
Downloader Middlewares(下载中间件):一个可以自定义扩展下载功能的组件。
Spider Middlewares(Spider中间件):一个可以自定扩展和操作引擎和Spider中间通信的功能组件。
(四)Scrapy框架的基本使用
当我们用scrapy框架创建一个项目的时候我们都需要在控制台(终端)输入命令来创建/执行一个项目或者一个爬虫文件。
(1)创建爬虫的项目
在终端输入创建项目的指令
scrapy startproject 项目的名字
注:项目的名字不可以由数字开头或者带有中文!
实例:
(2)创建爬虫的文件
这里需要在spiders文件夹中创建爬虫文件,所以在创建爬虫文件前需要将目录转换到spiders目录下
cd 项目的名字\项目的名字\spiders
随后创建爬虫文件
scrapy genspiders 爬虫文件的名字 爬取的网页
实例:
(3)执行爬虫文件
同样,运行爬虫文件时,也是需要在终端上输入指令的
scrapy crawl 爬虫文件的名字
实例:
注:在执行爬虫文件的时候,存在robot协议即君子协议。每个网站都制定了君子协议,使得不能让其他网站爬取网页数据,因此我们需要在配置文件中将robot协议注释掉才可以获得网页内容。
(五)Scrapy中response的属性和方法
1.获取响应的字符串
response.text
2.获取二进制数据
response.body
3.利用xpath获取内容
直接利用xpath语法来解析response中的内容
response.xpath()
4.获取seletor对象的属性值
response.extract()
5.获取seletor列表的第一个数据
response.extract_first()