Scrapy 框架
Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛。
框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便。
Scrapy 使用了 Twisted(其主要对手是Tornado)异步网络框架来处理网络通讯,可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求。
Scrapy的安装介绍
http://doc.scrapy.org/en/latest
制作 Scrapy 爬虫 一共需要4步:
* 新建项目 (scrapy startproject xxx):新建一个新的爬虫项目
* 明确目标 (编写items.py):明确你想要抓取的目标
* 制作爬虫 (spiders/xxspider.py):制作爬虫开始爬取网页
* 存储内容 (pipelines.py):设计管道存储爬取内容
scrapy框架流程图:
Scrapy Engine: 引擎负责控制数据流在系统中所有组件中流动,并在相应动作发生时触发事件。 详细内容查看下面的数据流(Data Flow)部分
调度器(Scheduler): 调度器从引擎接受request并将他们入队,以便之后引擎请求他们时提供给引擎
下载器(Downloader): 下载器负责获取页面数据并提供给引擎,而后提供给spider
Spiders: Spider是Scrapy用户编写用于分析response并提取item(即获取到的item)或额外跟进的URL的类。 每 个spider负责处理一个特定(或一些)网站
Item Pipeline: Item Pipeline负责处理被spider提取出来的item。典型的处理有清理、 验证及持久化(例如存取到数 据库中)
下载器中间件(Downloader middlewares): 下载器中间件是在引擎及下载器之间的特定钩子(specific hook),处理Downloader传递给引擎的 response。 其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能
Spider中间件(Spider middlewares): Spider中间件是在引擎及Spider之间的特定钩子(specific hook),处理spider的输入(response)和输出 (items及requests)。 其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能
流程总结:
1.首先下载器下载request回执的html等的response
2.然后下载器传给爬虫解析
3.接着爬虫解析后交给调度器过滤,查重等等
4.最后交给管道,进行爬取数据的处理
用scrapy框架撸爬虫的步骤(Linux下scrapy框架命令使用):
1. 新建一个项目 scrapy startproject '项目名称(baidu)'
2. 创建一个爬虫文件(进入第一步创建的项目中(cd baidu/baidu/spider) )最后进入到spider路径下 scrapy genspider 爬虫文件名 域名(被爬取的域 (例如:baidu.com))
注意:创建爬虫文件必须要在spiders文件下
3.运行爬虫文件命令 scrapy crawl 爬虫文件名
简单介绍一下各个主要文件的作用:
scrapy.cfg :项目的配置文件,定义了项目的配置文件路径、部署相关信息的内容
项目(baidu)/ :项目的Python模块,将会从这里引用代码
baidu/items.py :项目的目标文件,定义了Item的数据结构
baidu/pipelines.py :项目的数据管道文件,处理item数据
baidu/settings.py :项目的设置文件、全局的配置
baidu/jobbolespider/ :存储爬虫代码目录
进入项目中,首先进入设置(setting)中要修改的内容以及作用:
什么情况下会用到通用爬虫?
当我们提取数据的目标网站很有规律,并且各个模块很有规律,我们可以使用通用爬虫