Scrapy 爬虫框架15分钟快速入门

2018-03-16  本文已影响10694人  279d1d6d70b5

前言

学Python已经有一段时间了,听说Python爬虫很强大。抽空学习了Scrapy框架。近一个月爬取了不下10万条的某某网站的数据。不能说精通Scrapy,但是已经对Scrapy有一定的熟悉。准备写一系列关于Scrapy爬虫的教程,一方面巩固自己的知识,另一方面帮助更多的人学习爬虫相关知识。

Scrapy简介

Scrapy是Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。

架构概览

scrapy_architecture.png

咋一看这张架构图有点复杂,仔细分析一下其实也不难理解。

组件

Scrapy Engine(引擎)

引擎负责控制数据流在系统中所有组件中流动,并在相应动作发生时触发事件。 详细内容查看下面的数据流(Data Flow)部分。

此组件是爬虫的“大脑”,负责控制数据在系统中所有组件的流动。(数据从网络获取->一系列处理->结构化存储)

Scheduler(调度器)

调度器从引擎接受request并将他们入队,以便之后引擎请求他们时提供给引擎。

刚开始爬取的URL和后续爬取的URL将进去调度器,等待爬取。调度器有自动去除重复的URL的功能,也可配置不去重。

Downloader(下载器)

下载器负责获取页面数据并提供给引擎,而后提供给spider。

看上图,Engine向Scheduler请求一个待爬取的URL,接着发出请求给Downloader下载器下载数据。

Spiders

Spider是Scrapy用户编写用于分析response并提取item(即获取到的item)或额外跟进的URL的类。 每个spider负责处理一个特定(或一些)网站。

这个就是你写正则解析爬取的数据的地方,封装成指定的的item结构再传送给Pipeline、或者把之后的URL请求传递给Scheduler(见上图有个箭头指向Scheduler)。

Downloader middlewares(下载器中间件)

简单来说,可以在该中间件添加User-Agent,、IP代理等。

Spider middlewares(Spider中间件)

该中间件负责处理Downloader返回的response信息和从Spider发出去的Request(下一步请求)、Item对象(结构化的对象进入Pipline)

Item Pipeline

负责处理被Spider提取出来的item,可以在这里进行清理、验证、持久化处理等。

创建Scrapy项目流程

如果你看了以上的解释还不是很懂的话,接下来我们将创建一个项目来增强理解。
首先保证你的电脑已经通过pip安装了scrapy,接着在命令行(学开发的不懂命令行,那就有点😓了)输入:

scrapy startproject proxyCrawler

该命令将创建包含一下内容的爬虫目录:


image.png

这些文件分别是:

编写爬虫

这篇文章主要介绍了Scrapy框架的基本知识,下一章我们将编写一个爬虫来爬取网上的免费代理:西刺代理、蘑菇代理等。敬请期待...


微信公众号Python小咖~欢迎来撩
上一篇下一篇

猜你喜欢

热点阅读