Scrapy 入门教程,这篇从零到入门完整的概叙了scrapy的详细教程!这个框架很重要

Scrapy 入门教程,这篇从零到入门完整的概叙了scrapy的详细教程!这个框架很重要
最新回答
刘海是用来遮住眼泪

2026-10-24 09:23:14

Scrapy是一个用Python编写的高效爬虫框架,它能够帮助用户轻松实现网站数据的抓取和结构化数据的提取。

Scrapy框架具有强大的功能,用户只需定制开发少量模块,即可轻松创建一个爬虫,用于抓取网页内容和各种图片,非常便捷。

Scrapy使用了Twisted异步网络框架来处理网络通信,这可以加快下载速度,无需用户自行实现异步框架。此外,Scrapy还提供了各种中间件接口,可以灵活地完成各种需求。

Scrapy的架构图显示了数据流向(绿线),其中包含以下组件:

Scrapy Engine(引擎):负责Spider、ItemPipeline、Downloader、Scheduler之间的通讯,信号和数据传递。

Scheduler(调度器):它负责接受引擎发送的Request请求,并按一定方式整理排列,入队。当引擎需要时,将其交还给引擎。

Downloader(下载器):负责下载Scrapy Engine发送的所有Requests请求,并将获取到的Responses交还给Scrapy Engine,由引擎交给Spider处理。

Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler。

Item Pipeline(管道):它负责处理Spider获取到的Item,并进行后期处理(详细分析、过滤、存储等)。

Downloader Middlewares(下载中间件):它可以视为一个自定义扩展下载功能的组件。

Spider Middlewares(Spider中间件):它可以理解为是一个自定义扩展和操作引擎与Spider之间通信功能的组件(如进入Spider的Responses和从Spider出去的Requests)。

Scrapy的运作流程如下:编写代码,程序开始运行...

注意:只有当调度器中不存在任何Request时,整个程序才会停止(也就是说,对于下载失败的URL,Scrapy也会重新下载)。

制作Scrapy爬虫通常需要四个步骤:Scrapy的安装介绍。

Scrapy框架的官方网址为:
http://doc.scrapy.org/en/latest


Scrapy中文维护站点为:
http://scrapy-chs.readthedocs...


在Windows上安装Scrapy的方法如下:

Python 2 / 3 升级pip版本:pip install --upgrade pip

通过pip安装Scrapy框架:pip install Scrapy

在Ubuntu上安装Scrapy的方法如下:

Python 2 / 3 安装非Python的依赖:sudo apt-get install python-dev python-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev

通过pip安装Scrapy框架:sudo pip install scrapy

安装后,在命令终端输入scrapy,如果出现类似以下结果,表示已成功安装:

具体Scrapy安装流程参考:
http://doc.scrapy.org/en/latest
/ 里面有各个平台的安装方法

入门案例学习目标:新建项目(scrapy startproject)

在开始爬取之前,必须创建一个新的Scrapy项目。进入自定义的项目目录中,运行以下命令:

其中,mySpider为项目名称,可以看到将会创建一个mySpider文件夹,目录结构大致如下:

下面简单介绍一下各个主要文件的作用:

scrapy.cfg:项目的配置文件

mySpider/:项目的Python模块,将会从这里引用代码

mySpider/items.py:项目的目标文件

mySpider/pipelines.py:项目的管道文件

mySpider/settings.py:项目的设置文件

mySpider/spiders/:存储爬虫代码目录

二、明确目标(mySpider/items.py)

我们打算抓取:
http://www.itcast.cn/channel/...
网站里的所有讲师的姓名、职称和个人信息。

三、制作爬虫(spiders/itcastSpider.py)

爬虫功能分为两步:

1. 爬数据

在当前目录下输入命令,将在mySpider/spider目录下创建一个名为itcast的爬虫,并指定爬取域的范围:scrapy genspider itcast "itcast.cn"

打开mySpider/spider目录下的itcast.py,默认增加了以下代码:

其实也可以由我们自行创建itcast.py并编写上面的代码,只不过使用命令可以免去编写固定代码的麻烦

要建立一个Spider,你必须使用scrapy.Spider类创建一个子类,并确定三个强制属性和一个方法。

name = "":这个爬虫的识别名称,必须是唯一的,在不同的爬虫中必须定义不同的名字。

allow_domains = []:是搜索的域名范围,也就是爬虫的约束区域,规定爬虫只爬取这个域名下的网页,不存在的URL会被忽略。

start_urls = ():爬取的URL元组/列表。爬虫从这里开始抓取数据,所以,第一次下载的数据将会从这些urls开始。其他子URL将会从这些起始URL中继承性生成。

parse(self, response):解析的方法,每个初始URL完成下载后将被调用,调用时传入从每一个URL传回的Response对象作为唯一参数,主要作用如下:

负责解析返回的网页数据(response.body),提取结构化数据(生成item)

生成需要下一页的URL请求。将start_urls的值修改为需要爬取的第一个url

修改parse()方法

然后运行一下看看,在mySpider目录下执行:

是的,就是itcast,看上面代码,它是ItcastSpider类的name属性,也就是使用scrapy genspider命令的唯一爬虫名。

运行之后,如果打印的日志出现[scrapy] INFO: Spider closed (finished),代表执行完成。之后当前文件夹中就出现了一个teacher.html文件,里面就是我们刚刚要爬取的网页的全部源代码信息。

**注意,Python2.x默认编码环境是ASCII,当与取回的数据编码格式不一致时,可能会造成乱码;我们可以指定保存内容的编码格式,一般情况下,我们可以在代码最上方添加:**

这三行代码是Python2.x里解决中文编码的万能钥匙,经过这么多年的吐槽后Python3学乖了,默认编码是Unicode了...(祝大家早日拥抱Python3)

2. 取数据

爬取整个网页完毕,接下来的就是取数据的过程了,首先观察页面源码:

是不是一目了然?直接上XPath开始提取数据吧。

我们之前在mySpider/items.py里定义了一个ItcastItem类。这里引入进来

然后将我们得到的数据封装到一个ItcastItem对象中,可以保存每个老师的属性:

Scrapy保存信息的最简单的方法主要有四种:-o 输出指定格式的文件,命令如下:

json格式,默认为Unicode编码

json lines格式,默认为Unicode编码

csv 逗号表达式,可用Excel打开

xml格式

思考

如果将代码改成下面形式,结果完全一样。

请思考yield在这里的作用: