scrapy爬虫框架简绍与安装使用

2023-10-29

Scrapy

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中。
其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。

Scrapy 使用了 Twisted异步网络库来处理网络通讯。整体架构大致如下

Scrapy组件说明:

  • 引擎(Scrapy)
    用来处理整个系统的数据流处理, 触发事务(框架核心)
  • 调度器(Scheduler)
    用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个URL(抓取网页的网址或者说是链接)的优先队列, 由它来决定下一个要抓取的网址是什么, 同时去除重复的网址
  • 下载器(Downloader)
    用于下载网页内容, 并将网页内容返回给蜘蛛(Scrapy下载器是建立在twisted这个高效的异步模型上的)
  • 爬虫(Spiders)
    爬虫是主要干活的, 用于从特定的网页中提取自己需要的信息, 即所谓的实体(Item)。用户也可以从中提取出链接,让Scrapy继续抓取下一个页面
  • 项目管道(Pipeline)
    负责处理爬虫从网页中抽取的实体,主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。当页面被爬虫解析后,将被发送到项目管道,并经过几个特定的次序处理数据。
  • 下载器中间件(Downloader Middlewares)
    位于Scrapy引擎和下载器之间的框架,主要是处理Scrapy引擎与下载器之间的请求及响应。
  • 爬虫中间件(Spider Middlewares)
    介于Scrapy引擎和爬虫之间的框架,主要工作是处理蜘蛛的响应输入和请求输出。
  • 调度中间件(Scheduler Middewares)
    介于Scrapy引擎和调度之间的中间件,从Scrapy引擎发送到调度的请求和响应。

Scrapy运行流程大概如下:

1-引擎向spiders要url;

2-引擎将要爬取的url给调度器;

3-调度器将url生成的请求对象放到指定的队列中;

4-从队列中出列一个请求;

5-引擎将请求交给下载器处理;

6-下载器发送请求获得互联网数据;

7-下载器将数据返回给引擎;

8-引擎将数据交给spiders;

9-spiders通过xpath解析该数据得到数据或url;

10-spiders将解析后的数据或url回给引擎;

11-引擎判断数据(如果是数据交给管道处理器,如果是url交给调度器)

安装与使用

(1)去https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted下载twisted版本的whl文件

百度云链接:链接  提取码:sbgp 

然后去win黑框输入 pip install (文件位置安全属性找) 然后安装  pip install 

bs4 
requests
lxml
pywin32
PyOpenSSL
scrapy
mitmproxy

-i https://mirrors.aliyun.com/pypi/simple/

 

(安装过程缓慢,可以使用豆瓣源)
eg:  pip install bs4 -i https://mirrors.aliyun.com/pypi/simple/


(2)目录结构:会生成两重项目名称,

第一重包包含scarpy.cfg,第二重包包含其他文件,并包含spiders爬虫目录(爬虫文件在此文件内)

1.spiders 爬虫目录,包含爬虫文件

2.items.py 定义数据结构的地方

3.middlewares.py 中间件

(当需要配置IP代理时在此文件中
def process_request(self,request,apider):
    request.meta["proxy"] = "http[s]://ip:port"
    return None)

4.pipelines.py 管道文件

5.settings.py 项目配置文件,配置适用于项目内的每个spider

(1~ITEM_PIPELINES管道配置,用于item后处理,需要在pipelines文件或调用源文件中重写相应类,
并配置相应数据库属性

2~LOG 日志配置(LOG_LEVEL 设置日志显示等级,此举动决定了显示哪些,不显示哪些日志

                            LOG_FILE 将屏幕显示的信息记录到文件中,屏幕中不再显示)

3~DOWNLOADER_MIDDLEWARES 下载中间件(打开配置,在对应文件位置添加IP代理如:DOWNLOADER_MIDDLEWARES = { 'exam.middlewares.ExamDownloaderMiddleware': 543,},并在相应文件内添加具体IP)

4~DOWNLOAD_DELAY =1 设置爬取延迟时间,保护网站服务器

5~分布式爬虫配置

(#scrapy_redis指纹去重类
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"

# 调度器使用是scrapy_redis的调度器
SCHEDULER = "scrapy_redis.scheduler.Scheduler"

# 爬取的过程中是否允许暂停
SCHEDULER_PERSIST = True

# 配置存储的redis服务器
REDIS_HOST = '10.0.112.191'
REDIS_PORT = 6379))

(2)使用(eg:斗鱼)

创建Scrapy项目:

scrapy startproject douyu

进入spiders:

cd douyu/douyu/spiders

使用项目命令genspider创建Spider

scrapy genspider dy https://www.douyu.com/

(预知后事如何,请等下次更新)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

scrapy爬虫框架简绍与安装使用 的相关文章

  • 三元运算符

    用来完成简单的选择逻辑 即根据条件判断 从两个选择中选择一种执行 使用格式 条件表达式 表达式1 表达式2 运算规则 a 判断条件表达式 结果为一个布尔值 b true 运算结果为表达式1 c false 运算结果为表达式2 如 int a
  • Python3/Python2百度网盘链接地址

    Python3 Python2百度网盘链接地址 Python官网登录不上 Python下载太慢 我已经把Python的安装包下载好并上传百度网盘 链接 https pan baidu com s 1QPMUb4GlsOXLLGgJg0lPe
  • php socket error 111,php中的socket_connect上的“连接被拒绝”错误

    我试图将一些代码从perl转换为php Perl代码如下所示 my handle Connect port host 我试图使用socket在PHP中做同样的事情 我试过socket create和socket connect socket
  • js关闭当前页面刷新父页面

    在子页面添加监测弹出页面的关闭事件 然后刷新父页面就行了 window onbeforeunload function 这里刷新方法有很多 具体要看你的子窗口是怎样出来的 window opener location reload pare
  • HIVE sql经典50题

    表及数据 1表 学生表 create table student s id int s name string dt string sex string row format delimited fields terminated by t
  • wsl里linux密码忘记怎么办,Linux Bash on Win10 (WSL) 忘记密码解决

    win10 一周年版刚发布时就升级了 顺便也就装了linux bash on win10 但一直没有用就把root密码忘记了 今天终于在微软论坛上找到了解决方法 1 C userprofile AppData Local lxss root
  • 网络编程基础

    文章目录 简介 实现网络通信的要素 IP地址 测试 IP 的一些方法 端口 端口的分类 测试方法 通信协议 TCP 与 UDP 对比 TCP 用户传输协议 打电话 UDP 用户数据报协议 发短信 TCP 实现聊天 TCP 实现文件上传 UD
  • 【Linux】系统api和指令的模拟实现

    文章目录 1 虚拟地址空间 1 1一个进程打开的最大文件数量 2 stat文件信息函数 2 1stat参数和返回值 2 实现简单版ls l 对单文件操作 2 1获取文件类型 2 2获取连接数 2 3获取用户名和所有组 2 4获取时间 2 5
  • TensorFlow项目练手(二)——猫狗熊猫的分类任务

    项目介绍 通过猫狗熊猫图片来对图片进行识别 分类出猫狗熊猫的概率 文章会分成两部分 从基础网络模型 gt 利用卷积网络经典模型Vgg 基础网络模型 基础的网络模型主要是用全连接层来分类 比较经典的方法 也是祖先最先使用的方法 目前已经在这类
  • 十四五双碳双控时代下的“低碳认证”

    目录 前言 十四五双碳双控时代下的 低碳认证 一 关于 低碳认证 二 低碳认证优势 三 环境产品认证EPD 四 EPD相关运营机构 五 碳中和相关机构 六 EPD的认证流程 七 低碳产品认证认证流程和要求 八 相关机构认证证书样例 九 证书
  • 从‘discover.partitions‘=‘true‘分析Hive的TBLPROPERTIES

    从 discover partitions true 分析Hive的TBLPROPERTIES 前言 Hive3 1 2先建表 show databases use db lzy show tables create external ta
  • 语音网关1(T1/E1 总结)

    IP 包含signal and media and Legacy voice 国内 digital 用 E1 PRI 30B D 国外 T1 模拟 fxs fxo fxs接终端 fxo 接局端 ISDN 两种接口 BRI 基本数率接口 64
  • Android Studio ConstraintLayout约束布局使用学习笔记(二)参数使用

    自己学习约束布局的笔记 上接Android Studio ConstraintLayout约束布局使用学习笔记 一 熟悉工具 wrap constraint自适应大小 根据约束调整大小 当水平上不受约束的布局 选择wrap constrai
  • 数据库-5-访问数据库的程序

    ch05 访问数据库的程序 1 嵌入式SQL ESQL Embedded SQL 1 1 为什么要引入ESQL 1 2 C语言中的嵌入式SQL 1 3 ESQL和ISQL的语法不同 1 4 ESQL编程的步骤 1 4 1 声明部分 1 4
  • 免费分享: MySQL零基础入门教程!

    免费分享 MySQL零基础入门教程 目前MySQL已经成为最为流行的开源关系数据库系统 并且一步一步地占领了原有商业数据库的市场 可以看到Google Facebook Yahoo 网易 久游等大公司都在使用MySQL数据库 甚至将其作为核
  • Vue3带来了什么

    目录 性能方面的优化 更好的TypeScript集成 用于处理大规模用例的新API 分层内部模块 CompositionAPI 更多RFC 提供的两个新功能 proxy代替defineProperty 双向绑定 性能方面的优化 首先是相对V
  • Java Stream 常用数组类型转换用法

    业务目前经常会使用的stream流来处理数据 特别是对数组的类型进行转换 下面我分类总结常用的转换用法 1 字符串数组 数值型数组 int Long Double String str new String 1 2 3 4 5 6 int
  • mysql导出表结构到excel

    命令 SELECT TABLE NAME 表名 COLUMN NAME 列名 COLUMN TYPE 数据类型 DATA TYPE 字段类型 CHARACTER MAXIMUM LENGTH 长度 IS NULLABLE 是否为空 COLU
  • 【学习笔记】抽象队列同步器AQS应用之BlockingQueue详解

    文章目录 什么是AQS框架 Aqs核心源码 基于aqs实现的锁 BlockingQueue ArrayBlockingQueue LinkedBlockingQueue DelayQueue BlockingQueue API 多线程生产者
  • MAX 的读书计划——dp

    题目描述 MAX 很喜欢读书 为了安排自己的读书计划 他会预先把要读的内容做好标记 A B 表示一个页段 即第 A 到 B 面 当然 A

随机推荐

  • win10+Chrome浏览器截长图方法(亲测有效)

    方法亲测可行 操作系统为win10 部分内容基于https blog csdn net ianly123 article details 80565614进行修正 打开 Chrome 浏览器 进入需要截图的网站页面 打开开发者工具 在页面任
  • CUDA编程入门极简教程

    CUDA编程入门极简教程 转自 CUDA编程入门极简教程 作者 小小将 前言 2006年 NVIDIA公司发布了CUDA CUDA是建立在NVIDIA的CPUs上的一个通用并行计算平台和编程模型 基于CUDA编程可以利用GPUs的并行计算引
  • 搭建学校oj平台- 前端用户登录与导航栏

    前端用户登录与导航栏 gitee仓库代码在文章尾部 设置logo 上传到web src assets logo png 修改web public index html
  • openGauss学习笔记-57 openGauss 高级特性-并行查询

    文章目录 openGauss学习笔记 57 openGauss 高级特性 并行查询 57 1 适用场景与限制 57 2 资源对SMP性能的影响 57 3 其他因素对SMP性能的影响 57 4 配置步骤 openGauss学习笔记 57 op
  • Nacivat导入Access数据库时cannot initialize database问题解决

    问题 想使用Nacivat将Access数据库导入到pgsql 在选择Access数据库的mdb文件时提示 cannot initialize database 解决方案 需要安装AccessDatabaseEngine X64 下载地址
  • 如何限制请求的并发数量

    如何限制请求的并发数量 设计思路 代码实现 需求 当前端同时发出多个api请求 在前端对请求的并发数量进行限制 做到同时只能处理有限个请求任务 设计思路 设计 Scheduler 类 对需要发送的请求进行统一管理 类中配置最大并发数 max
  • python spyder环境配置

    首先安装python 配置环境变量等等 其次 pip install spyder 安装 spyder 最后启动 spyder cmd下 执行 spyder 就打开了 调试下面的代码看看是否是系统的python import sys pri
  • Mysql数据库学习笔记[完结]

    一 数据库 1 概述 数据库 database 简称db 就是用来存储数据和管理数据的仓库 分类 关系型数据库 指存放的数据之间是有紧密关系的 常见的有 Oracle MySQL SQLServer Access 非关系型数据库 指存放的数
  • element table复选框回显报错

    toggleRowSelection总报错 Cannot read properties of undefined reading toggleRowSelection 因为toggleRowSelection要在dom选然后才可以调用 解
  • python中父类和子类的属性,方法互相调用

    1 子类调用父类 class A object def init self self name leel def test self print A test class B A def init self super B self ini
  • FreeRTOS移植报错。Error: L6218E: Undefined symbol vApplicationGetIdleTaskMemory (referred from tasks.o)

    STM32H743移植FreeRTOS 本人使用的是正点原子的板子 由于官方资料找不到 H743的FreeRTOSConfig h此文件 本文此文件使用的CubeMX生成的 报错前如图 修改后 修改FreeRTOSConfig h文件里的宏
  • Intel(中国)云基础设施软件研发总监王庆:Intel在云原生里的技术发展和展望

    整理 小雨青年 在过去10多年里 云计算技术从虚拟化和容器技术衍生出来之后 得到了迅猛的发展 期间 涌现了众多的应用场景和应用需求 由此也产生了许多开源技术和项目 2022年7月21日 由中国开源软件推进联盟主办 赛迪传媒 软件和集成电路
  • 启动报错:org.springframework.data.repository.config.AnnotationRepositoryConfigurationSource

    启动报错 org springframework data repository config AnnotationRepositoryConfigurationSource Lorg springframework core type A
  • JavaEE学习记录day08集合02 Set

    JavaEE学习记录day08集合02 Set 1 Set集合 1 1Set集合概述和特点 应用 不可以存储重复元素 没有索引 不能使用普通for循环遍历 1 2Set集合的使用 应用 存储字符串并遍历 public class MySet
  • U盘重装系统Win10详细步骤和方法

    当前超多的用户都在使用Win10系统 有些用户想使用U盘来重装一下Win10系统 但不知道具体怎么操作 其实操作起来难度不会很大 可以按照以下小编给大家分享的U盘重装系统Win10详细步骤和方法 就能轻松顺利完成U盘重装系统Win10的操作
  • git 提交代码到github上

    1 通过git clone xxx git 将代码down到本地 2 当你修改或者添加文件的时候 3 首先使用git status 查看文件状态 4 然后使用git add 将文件add到本地缓冲区 5 再提交到本地仓库 git commi
  • el-input验证规则

    rules people 在未输入任何内容情况下触发 required true message 请输入你的内容 trigger blur 在输入非数字或不是1 100之间的整数时触发 pattern 0 1 9 0 9 100 0 9 0
  • 剑指 Offer 56 - I. 数组中数字出现的次数(java+python)

    一个整型数组 nums 里除两个数字之外 其他数字都出现了两次 请写程序找出这两个只出现一次的数字 要求时间复杂度是O n 空间复杂度是O 1 示例 1 输入 nums 4 1 4 6 输出 1 6 或 6 1 示例 2 输入 nums 1
  • java中代码块的执行顺序

    执行顺序 父类静态代码块 gt 子类静态代码块 gt 父类构造块 gt 父类构造方法 gt 子类构造块 gt 子类构造方法 注意 静态代码块只执行一次 并且是在main之前执行 构造块就是非静态代码块 执行顺序 父类静态代码块 只执行一次
  • scrapy爬虫框架简绍与安装使用

    Scrapy Scrapy是一个为了爬取网站数据 提取结构性数据而编写的应用框架 其可以应用在数据挖掘 信息处理或存储历史数据等一系列的程序中 其最初是为了页面抓取 更确切来说 网络抓取 所设计的 也可以应用在获取API所返回的数据 例如