Scrapy 是用 Python 实现的一个为了爬取网站数据、提取结构性数据而编写的应用框架。
Scrapy 常应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。
通常我们可以很简单的通过 Scrapy 框架实现一个爬虫,抓取指定网站的内容或图片。本文将讲解如何开启一个简单的scrapy框架。
scrapy教程
我通过一个爬取百度贴吧hello吧页面源码的简单爬虫来讲解
Scrapy架构(5+2结构)
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中间通信的功能组件。
一、安装scrapy
1.通过pip安装
pip install scrapy
二、创建工程
Scrapy 常用命令
步骤1:
自己指定一个目录下创建一个新工程,输入命令行
比如在E盘根目录下创建
在根目录下Shift+右键,打开PS窗口
输入命令行
1 | scrapy startproject hello |
当出现下面反应证明成功建立工程(我建立了一个hello工程)
步骤2:(该步骤也可以手工完成,这里就不说了)
在工程中产生一个scrapy爬虫
首先进入工程目录,继续输入命令行
1 | cd hello |
然后在执行如下命令(生成一个名称为baidutieba的spider):
1 | scrapy genspider baidutieba baidu.com |
生成的baidutieba.py文件在hello文件里的spiders目录下
三、爬取百度hello吧页面源码实例编写
打开baidutieba.py文件进行编写爬取代码:
改写成如下代码
然后保存。
最后 再用PS窗口命令行输入
1 | scrapy crawl baidutieba |
即如下图所示:
回车运行,最后会在hello目录下生成一个hello.txt的文件,里面就是百度贴吧hello吧页面的网页源码。