爬虫中的scrapy框架

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)中要修改的内容以及作用:



什么情况下会用到通用爬虫?

当我们提取数据的目标网站很有规律,并且各个模块很有规律,我们可以使用通用爬虫

你可能感兴趣的:(爬虫中的scrapy框架)