爬虫框架Scrapy 之(八) --- scrapy分布式部署

分布式爬虫

介绍

  一个分布式爬虫,一般有两个端:master端,主要负责处理数据;slaver端,主要负责爬取数据业务。

  不同的端采用不同的平台。服务程序都用linux系统,业务程序都用widoms系统。 

  服务器端(master端):

    可以用某一台主机作为redis服务器的运行方(即服务端),也称为master。服务程序都用linux系统

  客户端(slaver端):

    1)把普通爬虫修改成分布式,去掉start_urls(不让slaver随意的执行),替换成redis_key(为了让master能够控制slaver的爬取)

    2)修改自己配置文件,即在配置文件中加上scrapy_redis的组件。。业务程序都用widoms系统

安装

  •  pip install scrapy_redis

部署

  •    settings.py 文件中
 1 ITEM_PIPELINES = {
 2    # 'DushuPro.pipelines.DushuproPipeline': 300, # 数据的管道现在统一成分布式的管道
 3     "scrapy_redis.pipelines.RedisPipeline":400, # 开启分布式管道
 4 }
 5 
 6 # 指定redis分布式管道的服务器
 7 # 主机地址
 8 REDIS_HOST = "39.106.191.15"
 9 # 端口号
10 REDIS_PORT = 6379
11 # 密码
12 # REDIS_PARAMS = {"password":"xxxx"}
13 
14 # 调度器,把scrapy调度器修改成scrapy_redis调度器
15 SCHEDULER = "scrapy_redis.scheduler.Scheduler"
16 # 是否允许调度的过程暂停
17 SCHEDULER_PERSIST = True 
18 # 去重组件
19 DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
  •  spilder/book.py 文件中
# -*- coding: utf-8 -*-
import scrapy
# 在scrapy中有很多的爬虫模板,这些模板都是基于basic模板进行的功能的扩展(例如:crawl模板、feed模板等),最常用的就是crawl(即增量式爬虫),basicspider的设计理念是:从start_urls里面取出起始的url,使用start_urls来驱动引擎的工作;
# 【增量式爬虫】首先以start_urls中的url为起点,从这些url中不断的请求网页,然后从新的网页中匹配出新的url重新放入调度器的队列进行调度,再从新的url网页中提取新的url,再进行调度依次类推直至所有的url都匹配完成为止

from scrapy.linkextractors import LinkExtractor
# 用于根据一定的规则从网页中提取新的url

from scrapy.spiders import CrawlSpider, Rule
# CrawlSpider增量爬虫,Rule一个规则对象,可以根据LinkExtractor匹配的网址发起请求,并且回调函数

from DushuPro.items import DushuproItem
# 数据模型导入

from scrapy_redis.spiders import RedisCrawlSpider
# 分布式爬虫继承文件

# 将此类继承自RedisCrawlSpider
class BookSpider(RedisCrawlSpider):
    name = 'book'
    allowed_domains = ['dushu.com']
    # start_urls = ['https://www.dushu.com/book/1002.html']
    # 起始url从redis数据库中的book:start_urls这个键中获取
    redis_key = "book:start_urls"


# -----------------------后面的数据没有变化---------------------

 运行

  将起始url即start_url放入到阿里云服务器redis数据库的book:start_urls键中。然后启动爬虫,多台计算机共同访问此url进行爬取

  在终端连接上redis数据库后,输入:LPUSH book: start_url https://www.dushu.com/book/1002.html

  之后运行终止中的爬虫自动启动爬取

总结

分布式redis数据库中有4个key

  1. xxx:start_urls:用于向分布式系统提供起始url
  2. xxx:requests:用于盛放在爬虫运行的过程中新产生的那些请求对象
  3. xxx:items:用于存储爬虫爬取的数据
  4. xxx:dupefilter:用于盛放已经被访过的那些请求对象

分布式爬虫的运行过程

  1.  把所有的分机(slaver端)上的爬虫运行起来,由于没有start_urls,所有的分机都在等待起始url的产生
  2.  通过服务器脚本把那些起始的url放入到xxx:start_urls列表中
  3.  所有的slaver去竞争master端的xxx:start_urls中的起始url,一旦竞争到url则开启爬虫,没有竞争到slaver端继续监视xxx:start_urls和xxx:requests这两个列表
  4.  所有的分机如果对某个url访问成功则会把这个url加入去重列表中(即xxx:dupefilter),如果没有访问成功则会启动重传机制,如果再不成功就会这个url返回给requests列供其他slaver来使用
  5.  爬取成功的数据会通过管道组件存入到redis数据库的xxx:items列表中,并且把该页面新产生的url加入到xxx:requests列表中
  6.  如果所有的url都被取完(start_urls和requests两个列表都为空),则所有的slaver端都会暂停等待

 

转载于:https://www.cnblogs.com/TMMM/p/11370996.html

网络爬虫 - scrapy分布式(十六) scrapy分布式 阅读详情

相关推荐

Scrapy爬虫框架

Scrapy是一个基于Python的开源网络爬虫框架,用于从网页中提取数据。它提供了一套高效、灵活和可扩展的工具,可以帮助开发者快速构建和部署爬虫程序Scrapy是一个由Python语言开发的适用爬取网站数据、提取结构性数据的Web应用程序框架。主要用于数据挖掘、信息处理、数据存储和自动化测试等。通过Scrapy框架实现一个爬虫,只需要少量的代码,就能够快速的网络抓取Scrapy基于Twisted,Twisted是一个异步网络框架,主要用于提高爬虫的下载速度。

Java/Python大数据随笔 2651

scrapy分布式爬虫的部署,调度,与管理(scrapy + scrapy-redis + scrapyd + gerapy)

提供主机管理,爬虫项目管理,爬虫任务管理的web管理后台。提供中心化的任务队列,任务指纹队列,供分布式爬虫共享爬取任务队列。提供通过api方式单机部署爬虫的功能,爬虫状态查询等。一个python实现的高级web爬取和抓取框架,用于爬虫开发。根据官方文档说明,scrapy自己并不支持分布式的部署方式。文档给出的兼容方案是将不同的spider使用多台运行scipyd的设备进行部署,或者对于单一比较重的爬虫,手动分割爬取的地址列表,然后分配到多台设备。

逐月 1578

Python爬虫之Scrapy框架系列(22)——初识分布式爬虫scrapy_redis

scrapy_redis是一个基于Redis的Scrapy组件,用于scrapy项目的分布式部署和开发。

孤寒者的博客 1万+

【Python爬虫】Python3.8分布式爬虫scrapy-redis的搭建与运行(较为全面)

分布式爬虫scrapy-redis的搭建与运行

weixin_63133658的博客 3629

set_data_check专题[使用,report_timing,setup/hold检查]

set_data_check用于约束『数据-对-数据』的『建立保持』时间检查,通常被称为非时序约束 ( non-sequential constraints ), 理论上set_data_check 可以设在任意的两个data pin 上,其中一个pin 称为 constrained pin 类似于寄存器的data pin, 另一个pin 称为related pin 类似于寄存器的clock pin.

cy413026的博客 1万+

保姆级避坑指南:用Keil和J-Flash搞定凌思微LE5010蓝牙芯片的首次程序下载

本文提供了一份详细的保姆级避坑指南,帮助开发者使用Keil和J-Flash工具完成凌思微LE5010蓝牙芯片的首次程序下载。文章重点解决了算法文件混淆、协议栈漏烧和仿真器连接异常等常见问题,并详细介绍了开发环境配置、协议栈烧录和下载接口的物理层奥秘,助力开发者高效完成蓝牙开发任务。

weixin_28739079的博客 467

爬虫(十八):scrapy分布式部署

scrapy部署神器-scrapyd --》GitHub地址 --》官方文档 一:安装scrapyd 安装:pip3 install scrapyd 这里我在另外一台ubuntu linux虚拟机中同样安装scrapy以及scrapyd等包,保证所要运行的爬虫需要的包都完成安装. 在这里有个小问题需要注意,默认scrapyd启动是通过scrapyd就可以直接启动,这里bind绑定的...

weixin_30645617的博客 216

Open5GS实战:从零搭建树莓派5G核心网并与商用终端联调

本文详细介绍了如何在树莓派5上从零开始搭建基于Open5GS的5G核心网,涵盖系统准备、依赖安装、源码编译、关键配置修改及服务启动全流程。通过整合SDR基站与商用终端进行端到端联调,为开发者和研究者提供了一个低成本、可实践的5G网络实验平台,助力物联网与边缘计算应用的本地化测试与验证。

weixin_29194255的博客 160

Scrapy分布式爬虫系统的设计与部署实际

图3.1管理员用例图3.2.2。

m0_73268882的博客 1484

【雷达图】R语言绘制雷达图(ggradar),NBA季后赛数据为例

一起用R语言给nba球星画球技雷达图吧!

池塘春草梦的博客 6252

inferCNVpy实战指南:从安装到肿瘤细胞识别

本文提供inferCNVpy实战指南,详细介绍了从环境安装、数据准备到核心CNV推断分析的完整流程。重点讲解了如何利用该工具从单细胞转录组数据中识别肿瘤细胞,包括参考细胞选择、参数调优、结果可视化与解读,并分享了关键的避坑技巧,帮助用户高效完成肿瘤细胞识别。

weixin_29079643的博客 428

爬虫笔记整理14 - scrapyd分布式爬虫的部署

1. 简介 scrapyd是运行scrapy爬虫的服务程序,它支持以http命令方式发布、删除、启动、停止爬虫程序。而且scrapyd可以同时管理多个爬虫,每个爬虫还可以有多个版本。 2. 特点 1、可以避免爬虫源码被看到。 2、有版本控制。 3、可以远程启动、停止、删除 使用版本: scrapyd:1.2.0 scrapy:1.5.0 3. 安装 (1)pip pip install scrap...

Sevieryang/FinTech/Statistics/Quant 1220

红外热成像仪原理及应用

目录什么是红外热成像背景介绍热成像技术原理热成像分类红外热成像和夜视仪之间的区别红外热像仪夜视仪红外照明相机对比红外热像仪都能看透什么如何选择制冷型和非制冷型红外热像仪制冷型红外热像仪非制冷型红外热像仪实例对比成像速度空间分辨率灵敏度光谱滤波同步何如选择合适的红外热像仪像素测温范围和被测物温度分辨率空间分辨率温度稳定性热像仪的距离系数比常见热成像仪关键参数量程视场角 (FOV)红外分辨率热灵敏度(NETD)焦距光谱范围精度内置优化分析NTED(热灵敏度)什么是NETD如何测量NETD?NETD如何影响测量?

zhy295006359的博客 2万+

20.网络爬虫—Scrapy-Redis分布式爬虫

下载地址:🧾 🧾Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到 D 盘,解压后,将文件夹重新命名为 redis。 打开一个 cmd 窗口 使用 cd 命令切换目录到 C:\redis 运行:🧾 🧾如果想方便的话,可以把 redis 的路径加到系统的环境变量里,这样就省得再输路径了,后面的那个 redis.windows.conf 可以省略,如果省略,会启用默认的。输入之后,会显示如下界面: 分布式:一个业务

weixin_50804299的博客 8321

修改 Alist 密码时报错?看看这个坑怎么解决!

启动服务后,再修改密码”。以后再遇到类似问题,先检查服务是否正常运行,说不定就能少踩不少坑。如果还有其他 Alist 的问题,欢迎在评论区留言交流~

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1154

HDMI接口及其在编程中的应用

在编程中,我们可以使用HDMI接口来控制和管理连接到计算机的HDMI设备。本文将介绍HDMI接口的基本原理以及如何在编程中使用HDMI接口。在编程中,我们可以使用HDMI接口来控制和管理连接到计算机的HDMI设备。本文介绍了HDMI接口的基本原理,并提供了使用Python编程语言和相关库实现HDMI接口应用的示例代码。我们可以使用编程语言提供的音频库来生成和播放音频,并将其通过HDMI接口输出到连接的设备上。我们可以使用编程语言提供的音频库来生成和播放音频,并将其通过HDMI接口输出到连接的设备上。

CodeByte的博客 802

Python开发从入门到精通:网络爬虫高级应用与Scrapy框架

本文介绍了Python网络爬虫的高级应用与Scrapy框架的核心内容。首先概述了网络爬虫的基本概念和工作流程,然后重点讲解了Scrapy框架的安装、项目创建和爬虫编写方法。针对动态网页爬取,介绍了Selenium的使用及其与Scrapy的结合。在反爬虫策略方面,详细说明了代理IP、User-Agent旋转和Cookies池等技术的实现。最后,通过Scrapy-Redis实现了分布式爬虫,并以豆瓣电影Top250为案例进行了实战演示。文章涵盖了网络爬虫开发的核心技术要点,包括框架使用、反反爬措施和分布式处理等

编程世界如山海,探索不止。 2万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Python爬虫总结——Scrapy+Gerapy部署网络爬虫

网络爬虫(也称为网页蜘蛛、Web 蜘蛛、网络机器人或网络蚂蜂)是一种自动按照特定规则在网络上搜索信息的软件程序。网络爬虫的主要目的是扫描网络,收集信息,并将其存储在数据库或其他存储系统中。网络爬虫可以用于多种目的,例如搜索引擎中收集网站内容以供搜索、监测网站的变化、网站访问统计、收集电子邮件地址等。本文通过jupyter notebook上进行基础单网页爬虫以及通过Scrapy+Gerapy实现多网页爬虫、定时抓取网页信息的案例演示。

Unkhmilu的博客 2263

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Python网络爬虫数据采集实战:Scrapy框架爬取QQ音乐存入MongoDB

​通过前七章的学习,相信大家对整个爬虫有了一个比较全貌的了解 ,其中分别涉及四个案例:静态网页爬取、动态Ajax网页爬取、Selenium浏览器模拟爬取和Fillder今日头条app爬取,基本涵盖了爬虫的大致套路。本文在此基础上进一步深耕,使用Scrapy框架构建分布式爬虫系统,更加接近搜索引擎技术。 目录 一、前期准备 1.Scrapy原理概述 2....

大数据之眸 5178

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

网络爬虫解析

网络爬虫(也称为网页蜘蛛、网络机器人)是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。网络爬虫可以用于从网站提取数据,例如监测社交媒体平台上的活动,或者从网上收集新闻和文章。它们也可以用于搜索引擎,如Google和Bing,来抓取和索引网页,以便在用户进行搜索时提供结果。URL通常由多个部分组成,包括协议类型(如HTTP、HTTPS)、主机名(域名或IP地址)、路径(资源在主机上的位置)以及可选的查询参数(用于传递额外的信息)。通过URL,用户可以方便地访问和定位到特定的网络资源。

2301_82032652的博客 2634

网络爬虫框架Scrapy之Scrapyd部署Scrapy项目

Scrapyd是一个用于部署Scrapy爬虫的开源工具。它可以轻松地在多台服务器上部署和运行Scrapy爬虫,并提供了一些有用的功能,例如爬虫版本管理、调度爬虫任务、监控爬虫运行状态等。

积跬步,至千里。 2095

使用Python进行网络爬虫Scrapy框架的实践

进入到myspider目录,并创建一个新的爬虫。这将在spiders目录下创建一个名为example.py的Python文件,其中包含了一个基本的爬虫示例。打开example.py文件,并编辑其中的start_urls和parse方法,以定义你要爬取的网站和如何解析网页的方式。# 在这里编写解析网页的逻辑# 例如,提取标题和链接yield {# 接下来,可以继续爬取更多页面# 例如,找到下一页的链接并继续爬取在这个示例中,爬虫会访问,并解析网页中的文章标题和链接。

一键难忘的博客 2692

Scrapy框架之Scrapyd部署及Gerapy分布式爬虫管理框架的使用

Scrapyd是一个用于部署和运行 Scrapy 爬虫的服务器。

qq_44990881的博客 1523

python爬虫框架论文开题报告范文_基于Scrapy的分布式网络爬虫的设计与实现.doc...

摘要:飞速发展起来的网络,成就了万维网这个拥有着大量信息资源的宝藏。越来越多的人参与到了这个“宝藏”的挖掘中,如何挖掘海量数据中的价值也是当下主流的研究课题。正是这种对数据利用的强烈需求催生了网页数据采集,也就是网络爬虫技术。网络爬虫是搜索引擎的一部分,其主要的功能就是将网络上的数据下载到本地形成一个互联网内容的本地镜像,应用十分广泛的。大数据时代,海量的数据抓取需求已经是单机集中式爬虫无法满足的...

weixin_39555179的博客 2360

Python的分布式网络爬虫

分布式爬虫其实就是指利用多台计算机分布式地从互联网上采集数据的一种爬虫。它可以把大规模的任务分解成若干小规模的,由多台计算机并行进行处理,大大提高了效率和速度。

weixin_44617651的博客 3724
上一篇: 爬虫框架Scrapy 之(七) --- scrapy代理植入
下一篇: 爬虫框架Scrapy 之(九) --- scrapy分布式原理
baoding4359
博客等级 码龄11年 2粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值