Scrapy: 一个强大的 Python 爬虫框架--介绍--下载--启动!!

news2024/11/24 1:36:09

目录

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 提供了一个整合了请求、处理和存储流程的机制,使得开发者可以专注于数据提取和处理的逻辑,而无需过多关注底层细节。

主要特点

  1. 高性能:Scrapy 使用异步处理和多线程机制,能够高效地处理大规模的数据抓取任务。

  2. 可定制性:Scrapy 提供了丰富的扩展接口,允许开发者根据自己的需求进行定制和扩展。

  3. 分布式支持:Scrapy 支持分布式爬取,可以利用多台机器并行抓取数据,提高效率。

  4. 调度器:Scrapy 内置了一个调度器,能够自动管理请求的优先级和并发量,确保爬虫的稳定和高效。

  5. 中间件:Scrapy 提供了丰富的中间件接口,可以对请求和响应进行预处理和后处理,实现代理、用户代理等功能。

  6. 数据处理: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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/685455.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ERR! code ERR_SOCKET_TIMEOUT

问题 安装npm包,终端报错ERR! code ERR_SOCKET_TIMEOUT ERR! code ERR_SOCKET_TIMEOUT详细问题 笔者运行以下命令重新安装依赖项: npm install控制台报错,具体报错信息如下 npm ERR! code ERR_SOCKET_TIMEOUT npm ERR! network Socket t…

【C++】【VLD】VLD检测内存泄漏

【C】【VLD】VLD检测内存泄漏 C/C 程序越复杂,内存的管理显得越重要,稍有不慎就会出现泄漏。如果内存泄漏不是很严重,在短时间内对程序不会有太大影响,这也使得内存泄漏问题有很强的隐蔽性,不易被发现。 然而不管内存…

计算机网络——传输层

序言 计算机网络中的传输层在当今的社会起到了什么作用? 计算机网络中的传输层在通信和数据传输方面起着至关重要的作用。传输层是计算机网络体系结构中的一层,它负责提供端到端的可靠数据传输和通信服务;有着以下几个方面作用:可…

3-css高级特效-2

01-空间转换 空间转换简介 空间:是从坐标轴角度定义的 X 、Y 和 Z 三条坐标轴构成了一个立体空间,Z 轴位置与视线方向相同。空间转换也叫 3D转换属性:transform 平移 transform: translate3d(x, y, z); transform: translateX(); transfor…

chatgpt赋能python:Python聊天机器人程序:把智能带入聊天

Python聊天机器人程序:把智能带入聊天 在数字化时代,机器人指引和客户服务变得越来越流行。为了快速而有效地满足这种需求,聊天机器人被广泛研究与开发。Python是在这方面一个非常受欢迎的编程语言,能够快速地构建聊天机器人。在…

【C++】win 10 / win 11:Visual Studio 2022 社区版免费下载与安装

目录 一、Visual Studio 2022 下载 二、Visual Studio 2022 安装 三、Visual Studio 2022 快捷方式创建 四、Visual Studio 2022 使用 一、Visual Studio 2022 下载 Visual Studio 2022 官方下载https://visualstudio.microsoft.com/zh-hans/downloads/首先登陆 Visual Stu…

基于Java医院在线挂号预约系统设计实现(源码+lw+部署文档+讲解等)

博主介绍: ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精…

Jmeter简单实现登录测试

目录 前言: 1、添加线程组--在测试计划上右击-添加-Threads-线程组 2、添加http请求默认值--在线程组上右击-添加-配置元器件-http请求默认值 3、添加sampler-http请求-登录界面 4、添加sampler-http请求-登录-携带用户名和密码 5、创建存放用户名和密码的文件…

数通王国历险记之TCP协议下的三大协议的验证实验

系列文章目录 数通王国历险记(1) 前言 一,我们要先知道PDU是什么? 二、TCP协议下的三大协议的验证实验 1.FTP的验证实验 1,拓扑图 2.将lsw4配置一下 3,FTP服务器端开启FTP服务: 4&#x…

SpringBoot 如何使用 TestEntityManager 进行 JPA 集成测试

SpringBoot 如何使用 TestEntityManager 进行 JPA 集成测试 简介 在开发过程中,JPA 是常用的持久化框架之一,它可以帮助我们将对象映射到数据库中,并提供了一系列操作数据库的 API。在进行 JPA 的开发和测试时,我们通常会使用一…

Mybatis实现分页功能

1、关于逻辑分类和物理分页 分页可分为逻辑分页和物理分页 逻辑分页是一次性把全部数据查询加载进内存 ,然后再进行分页。这样优点是减少IO次数,适合频繁访问、数据量少的情况。缺点是不适合大数据量,容易造成内存溢出。物理分页是利用limi…

Android JVM 原理简析

当我们在开发 Android 应用程序时,我们实际上是在使用 Java 编程语言编写代码,并将其编译为在 Android 上运行的字节码。这些字节码最终在 Android 设备上的 Java 虚拟机(JVM)中执行。 Android JVM的意义 学习 Android JVM&#…

Java基础知识面试题

Java概述 何为编程 编程就是使用某种程序设计语言编写程序代码让计算机解决某个问题 为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作&a…

Spring相关API

⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章 ⭐作者主页:逐梦苍穹 ⭐所属专栏:JavaEE、Spring SpringAPI 1、继承体系2、 getBean() 1、继承体系 上述继承体系中的主要类和接口包括&#xff1…

WebRTC-STUN协议详解

1、STUN协议概述 STUN(Session Traversal Utilities for NAT)NAT会话穿透工具,STUN是一个Client/Server协议,支持请求/响应类型、指示类型两种类型。STUN作为ICE(Interactive Connectivity Establishment,…

【需求实现】输入多少就输出多少的拟合任务如何实现(一):数据集分割

神经网络中输入多少数据就输出多少数据的情况如何实现 导读数据集长什么样?怎么分割数据集?时间窗口分析模板我知道你很急,但你先别急 换个思路 导读 在实习的过程中遇到了这样一种需求:给定一条序列,并另外给定一条期…

使用ffmpeg将rtsp流转流实现h5端播放

主要实现rtsp转tcp协议视频流播放 ffmpeg下载安装(公认业界视频处理大佬) a、官网地址:www.ffmpeg.org/ b、gitHub:github.com/FFmpeg/FFmp… c、推荐下载地址:ffmpeg.zeranoe.com/builds/ (选择如下图) 2.配置ffmpeg…

期末复习【计算机系统结构】

期末复习【计算机系统结构】 前言推荐押题公式 期末复习重点第1章 计算机体系结构的基本概念1.3 定量分析技术1.3.1计算机系统设计的定量原理 第2章 计算机指令集结构第3章 流水线技术3.2 流水线的性能指标3.2.1 吞吐率3.2.2 加速比3.2.3 效率3.2.4 流水线性能分析举例 3.3 流水…

miniconda的安装

1. conda 是一个开源的包、环境管理器,可以用于在同一个机器上安装不同版本的软件包及其依赖,并能够在不同的环境之间切换。 miniconda官网下载 miniconda清华镜像下载 找到自己想要安装的版本,我这里选择的是Miniconda3-4.7.12.1-Linux-x…

OUC编译原理实验报告 实验4:验证Yacc的使用/实验e4:从语言SUM到栈式计算机STACK的机器语言的翻译

编译原理实验报告 实验4:验证Yacc的使用 实验e4:从语言SUM到栈式计算机STACK的机器语言的翻译 中国海洋大学编译原理实验2023春 仅供同学参考思路 请勿直接抄袭 否则可能喜提0分 目录 文章目录 编译原理实验报告目录一.实验目的二.实验内容实验4实验…