Scrapy 爬虫框架15分钟快速入门
前言
学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.cfg: 项目的配置文件。
- scrapyspider/: 该项目的python模块。之后您将在此加入代码。
- scrapyspider/items.py: 项目中的item文件。
- scrapyspider/pipelines.py: 项目中的pipelines文件。
- scrapyspider/settings.py: 项目的设置文件。
- scrapyspider/spiders/: 放置spider代码的目录。
编写爬虫
这篇文章主要介绍了Scrapy框架的基本知识,下一章我们将编写一个爬虫来爬取网上的免费代理:西刺代理、蘑菇代理等。敬请期待...
微信公众号Python小咖~欢迎来撩