1 前言
要说到爬虫界的明星,当属我们的python,而这得益于我们的爬虫明星框架--scrapy,这就让我们不得不学习它,这几天刚好用它做一些小demo,就将其总结一下,希望能对大家的学习爬虫有所帮助。
这次要爬取的是我们IT界挺有名的技术文章网站--伯乐在线的所有文章,并解析文章详情,本文适合有一定爬虫基础的同学(用过requests库,urllib库之类的)
本人的github地址:https://github.com/oldbig-carry/jobbole_spider
欢迎fork,和star哦
2 Scrapy框架之初窥门径
2.1 Scrapy简介
Scrapy Engine(Scrapy核心) 负责数据流在各个组件之间的流。Spiders(爬虫)发出Requests请求,经由Scrapy Engine(Scrapy核心) 交给Scheduler(调度器),Downloader(下载器)Scheduler(调度器) 获得Requests请求,然后根据Requests请求,从网络下载数据。Downloader(下载器)的Responses响应再传递给Spiders进行分析。根据需求提取出Items,交给Item Pipeline进行下载。Spiders和Item Pipeline是需要用户根据响应的需求进行编写的。除此之外,还有两个中间件,Downloaders Mddlewares和Spider Middlewares,这两个中间件为用户提供方面,通过插入自定义代码扩展Scrapy的功能,例如去重等。因为中间件属于高级应用,本次教程不涉及,因此不做过多讲解。
2.2 Scrapy基础
安装好Scrapy之后,我们就可以开启我们的Scrapy之旅了。官方的详细中文教程,请参见:http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/tutorial.html 。我这里只讲本次实战用到的知识。
简单流程如下:
- 创建一个Scrapy项目;
- 定义提取的Item;
- 编写爬取网站的 spider 并提取 Item;
- 编写 Item Pipeline 来存储提取到的Item(即数据)。
2.2.1 创建项目
在开始爬取之前,我们必须创建一个新的Scrapy项目。 进入打算存储代码的目录中,运行下列命令:
该命令将会创建包含下列内容的cartoon目录: