目录
Scrapy
影响力
介绍
主要特点
架构
运行流程
基本使用
安装
创建 Scrapy 项目
创建爬虫
爬虫包含的内容
运行爬虫
Scrapy
影响力
作为目前爬虫主流框架之一,Scrapy的影响力和应用范围非常广泛:
- 根据GitHub上的数据,Scrapy是一个非常受欢迎的开源项目,截至2022年12月15日,它有超过4.3万个星标,9.6千个分支和1.8千个观察者1。在Python的爬虫框架中,Scrapy无疑是最受关注和使用的一个。
- 根据百度指数的数据,Scrapy在中国的搜索量在过去一年中保持了相对稳定的水平,平均每天有约1.5万次搜索2。这说明Scrapy在中国有着一定的知名度和需求度。
- 根据CSDN、知乎、PythonTab等技术社区和博客平台的数据,Scrapy在中国有着丰富的教程、案例、问答和交流资源,可以帮助开发者学习和解决问题3456。这说明Scrapy在中国有着一定的用户基础和活跃度。
- 根据行业报告和新闻报道的数据,Scrapy在中国被广泛应用于数据分析、网络安全、电商平台、金融服务等领域,为各种业务场景提供了高效、灵活、可扩展的数据抓取和处理方案 。这说明Scrapy在中国有着一定的市场价值和竞争力。
注:该段内容为Bing AI创作
介绍
Scrapy 是一个基于 Twisted 框架用于抓取网站和提取结构化数据的开源网络爬虫框架,可用于各种有用的应用程序,如数据挖掘、信息处理或历史存档,它的设计目标是快速、高效、可扩展和可定制。Scrapy 提供了一个整合了请求、处理和存储流程的机制,使得开发者可以专注于数据提取和处理的逻辑,而无需过多关注底层细节。
主要特点
高性能:Scrapy 使用异步处理和多线程机制,能够高效地处理大规模的数据抓取任务。
可定制性:Scrapy 提供了丰富的扩展接口,允许开发者根据自己的需求进行定制和扩展。
分布式支持:Scrapy 支持分布式爬取,可以利用多台机器并行抓取数据,提高效率。
调度器:Scrapy 内置了一个调度器,能够自动管理请求的优先级和并发量,确保爬虫的稳定和高效。
中间件:Scrapy 提供了丰富的中间件接口,可以对请求和响应进行预处理和后处理,实现代理、用户代理等功能。
数据处理:Scrapy 提供了方便的机制来处理爬取的数据,可以进行清洗、转换和存储。
架构
最简单的单个网页爬取流程是 spiders > scheduler > downloader > spiders > item pipeline
省略了engine环节!
引擎 | Engine |
调度器 | Scheduler |
下载器 | Downloader |
爬虫 | Spider |
管道 | Pipeline |
中间件 | Middleware |
别问,问就是英语不好。
Scrapy的架构是一个基于事件驱动的框架,它主要由以下五大组件组成:
-
引擎(engine)
- 用来处理整个系统的数据流处理, 触发事务(框架核心)
-
调度器(Scheduler)
- 用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个URL(抓取网页的网址或者说是链接)的优先队列, 由它来决定下一个要抓取的网址是什么, 同时去除重复的网址
-
下载器(Downloader)
- 用于下载网页内容, 并将网页内容返回给蜘蛛(Scrapy下载器是建立在twisted这个高效的异步模型上的)
-
爬虫(Spiders)
- 爬虫是主要干活的, 用于从特定的网页中提取自己需要的信息, 即所谓的实体(Item)。用户也可以从中提取出链接,让Scrapy继续抓取下一个页面
-
项目管道(Pipeline)
- 负责处理爬虫从网页中抽取的实体,主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。当页面被爬虫解析后,将被发送到项目管道,并经过几个特定的次序处理数据。
除了这五大组件,Scrapy还有三个中间件管理器类:
-
下载器中间件(Downloader Middlewares)
- 位于Scrapy引擎和下载器之间的框架,主要是处理Scrapy引擎与下载器之间的请求及响应
-
爬虫中间件(Spider Middlewares)
- 介于Scrapy引擎和爬虫之间的框架,主要工作是处理蜘蛛的响应输入和请求输出
-
调度中间件(Scheduler Middewares)
- 介于Scrapy引擎和调度之间的中间件,从Scrapy引擎发送到调度的请求和响应
运行流程
自己看上面那个图吧。
基本使用
安装
在命令行或者终端中输入:
pip install scrapy
但是这样子有时候会报错,版本不匹配。
解决方案如下:
使用清华的镜像:
Windows:打开cmd,输入 :
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scrapy
Mac:打开终端,输入:
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple scrapy
创建 Scrapy 项目
在命令行中执行以下命令,创建一个新的 Scrapy 项目:
scrapy startproject myfrist(project_name)
会生成一个文件夹里面很多文件:
名称 | 作用 |
---|---|
scrapy.cfg | 项目的配置信息,主要为Scrapy命令行工具提供一个基础的配置信息。(真正爬虫相关的配置信息在settings.py文件中) |
items.py | 设置数据存储模板,用于结构化数据,如:Django的Model |
pipelines | 数据处理行为,如:一般结构化的数据持久化 |
settings.py | 配置文件,如:递归的层数、并发数,延迟下载等 |
spiders | 爬虫目录,如:创建文件,编写爬虫规则 |
创建爬虫
scrapy genspider 爬虫名 爬虫的地址
注意:
一般创建爬虫文件时,以网站域名命名
爬虫包含的内容
- name: 它定义了蜘蛛的唯一名称
- allowed_domains: 它包含了蜘蛛抓取的基本URL;
- start-urls: 蜘蛛开始爬行的URL列表;
- parse(): 这是提取并解析刮下数据的方法;
代码
import scrapy
class XimalayaSpider(scrapy.Spider):
name = "ximalaya"
allowed_domains = ["ximalaya.com"]
start_urls = ["https://www.ximalaya.com"]
def parse(self, response):
print(11111111111111111)
运行爬虫
在命令行中执行以下命令,运行我们的爬虫:
scrapy crawl myspider
Scrapy 将会按照我们定义的规则进行网页抓取和数据提取,并将结果输出到控制台或存储到指定的文件中。
----------------------------------------------------------------------------------------
声明: 此文章为原创作品,辅助创作工具为chatGPT-3.5和Bing AI。