scrapy-redis mysql_Scrapy-redis 分布式

分布式:

架构方式

多台真实机器+爬虫(如requests,scrapy等)+任务共享中心

多台虚拟机器(或者部分虚拟部分真实)+爬虫(如requests,scrapy等)+任务共享中心

多台容器级虚拟化机器(或者部分真实机器)+爬虫(如requests,scrapy等)+任务共享中心

docker+redis+requests+(mysql)

docker+redis+scrapy+scrapy-redis+r(mysql)

中心节点:任务控制-通信redis,数据存储mysql

rconn=redis.Redis(“118.31.46.101″,”6379”) #连接中心节点redis

for i in range(0,5459058):

isdo=rconn.hget(“url”,str(i))

if(isdo!=None): #先取出当前url判断是否爬取过

continue

rconn.hset(“url”,str(i),”1″) #如没有爬过,先把url标记

try:

data=urllib.request.urlopen(“http://www.17k.com/book/”+str(i)+”.html”).read().decode(“utf-8″,”ignore”)

except Exception as err:

print(str(i)+”—-“+str(err))

continue

pat=”

rst=re.compile(pat,re.S).findall(data)

if(len(rst)==0):

continue

name=rst[0]

print(str(i)+”—–“+str(“ok”))

rconn.hset(“rst”,str(i),str(name)) #当前url爬完后,把数据保存

scrapy-redis

pip3 install scrapy-redis

scrapy-redis中queue三种方式:

SpiderQueue = FifoQueue #先进先出

SpiderStack = LifoQueue #后进先出

SpiderPriorityQueue = PriorityQueue #优先队列,默认

scrapy-redis分布式部署:

中心节点安装redis,(mysql)

各子节点均安装python,scrapy,scrapy-redis,python的redis模块,(pymysql)

将修改后的分布式Crawler项目部署到每个子节点

[En]

Deploy the modified distributed crawler project to each child node

每个子节点分别运行分布式爬虫项目。

[En]

Each child node runs the distributed crawler project respectively.

一.修改爬虫文件

1.导入scrapy-redis模块:from scrapy_redis.spiders import RedisSpider

2.将当前爬虫类的父类修改成RedisSpider

3.将allowed_domains和start_urls进行删除

4.添加一个新的属性redis_key = ‘xxx’,该属性值表示的就是可以被共享的调度器队列的名称

二.进行配置文件的配置

1.保证爬虫文件发起的请求都会被提交到可以被共享的调度器的队列中

SCHEDULER = “scrapy_redis.scheduler.Scheduler”

2.保证爬虫文件提交的item会被存储到可以被共享的管道中

ITEM_PIPELINES = {

‘scrapy_redis.pipelines.RedisPipeline’: 400

3.配置最终数据存储的redis数据库

REDIS_HOST = ‘redis服务的ip地址’

REDIS_PORT = 6379

REDIS_ENCODING = ‘utf-8’

REDIS_PARAMS = {‘password’:’123456dj’}

4.redis数据库的配置文件进行配置:关闭保护模式和注释掉bind 127.0.0.1

5.开启redis服务和客户端

6.执行爬虫文件:scrapy runspider xxx.py

7.向调度器队列中仍入一个起始的url:

settings:

使用的是可以被共享的调度器

增加了一个去重容器类的配置, 作用使用Redis的set集合来存储请求的指纹数据, 从而实现请求去重的持久化

DUPEFILTER_CLASS = “scrapy_redis.dupefilter.RFPDupeFilter”

使用scrapy-redis组件自己的调度器

SCHEDULER = “scrapy_redis.scheduler.Scheduler”

配置调度器是否要持久化, 也就是当爬虫结束了, 要不要清空Redis中请求队列和去重指纹的set。如果是True, 就表示要持久化存储, 就不清空数据, 否则清空数据

SCHEDULER_PERSIST = True

使用scrapy-redis中封装好的可以被共享的管道

ITEM_PIPELINES = {

‘scrapy_redis.pipelines.RedisPipeline’: 400

配置redis

REDIS_HOST = ‘127.0.0.1’

REDIS_PORT = 6379

REDIS_ENCODING = ‘utf-8’

REDIS_PARAMS = {‘password’:’123456′}

Original: https://blog.csdn.net/weixin_39554290/article/details/113398158
Author: weixin_39554290
Title: scrapy-redis mysql_Scrapy-redis 分布式



相关阅读

Title: Vue前后台数据交互实例演示,使用axios传递json字符串、数组

Vue 前后台数据交互实例演示

[ 推荐文章 ]
Python 地图篇 – 使用 pyecharts 绘制世界地图、中国地图、省级地图、市级地图实例详解

第一章:后台实现

① Python 启用 Flask 服务器

后端使用 python 启用一个 flask 服务器。
将数组封装在 json 字符串里进行发送,前台直接在 json 字符串里读数据就行。


import flask

app = flask.Flask(__name__)

@app.route('/get_data')
def get_data():
    json_data = {
                "data1":[48, 57, 55, 80, 67, 67, 29, 19,20,15,5,11,3,100,190],
                "data2":[1, 57, 55, 300, 67, 67, 29, 19,20,15,5,11,3,10,190]
                }
    return json_data;

host_ip = "127.0.0.1"

host_port = 15004
app.run(host = host_ip, port = host_port)

② 后台启用成功验证

启动后样式,下面的两行 2002 个请求记录。

scrapy-redis mysql_Scrapy-redis 分布式
通过 http://127.0.0.1:15004/get_data 访问浏览器看看后台是否成功启用。
scrapy-redis mysql_Scrapy-redis 分布式

; 第二章:前台实现

① Vue 使用 Axios 实现接收 json 字符串、数组数据

我们首先 npm install axios 安装 axios
其中的 response.data 就是后端发送的 json 字符串数据, response.data.data1 就是数组 1
注意 axios 使用前需要 import axios from 'axios' 导入下。
想自己验证的话可以把里面更新表格数据的内容注释掉,看看提示框能不能显示出数据。

<input type="button" @click="get_data()" value="点击同步数据" />

<script>
import axios from 'axios';

export default {
  methods:{

    set_charts(data){

        alert("数组1:"+data.data1+"\n"+"数组2:"+data.data2);

        let lineData = { ...this.lineChartData };
        lineData.datasets.forEach(dataset => {
          dataset.data = data.data1;
        })
        this.lineChartData = lineData;
    },

    get_data(){
      axios
        .get('http://127.0.0.1:15004/get_data')
        .then(response => {

          this.set_charts(response.data);
          })

        .catch(function (error) {
          console.log(error);
      });
    }
  }
}

② 前台接收数据演示

这是演示的效果图,可以看到我们增加的按钮还有个预置的表格,点击一下按钮。

scrapy-redis mysql_Scrapy-redis 分布式
可以看到提示框展示的就是我们后台发送的数据。
scrapy-redis mysql_Scrapy-redis 分布式
提示框关掉后,可以看到表格里的数据也同步过来了。
scrapy-redis mysql_Scrapy-redis 分布式
喜欢的点个赞❤吧!

Original: https://blog.csdn.net/qq_38161040/article/details/123721332
Author: 挣扎的蓝藻
Title: Vue前后台数据交互实例演示,使用axios传递json字符串、数组

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/354683/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 【树莓派入门系列】4 树莓派安装测试torch与torchvision

    树莓派运行YOLOV5项目 安装测试torch & torchvision 项目目录 点击跳转 0. 首页1. 前期准备工作2. 配置树莓派系统3. 安装测试opencv4…

    2022年8月28日
    099
  • Anaconda/pip 更换阿里源,助力 conda create -n 虚拟环境搭建

    由于网络和时间的限制,很多的 conda 源,如 清华源,中科大源都需要想办法才能创建好虚拟环境(如本人发现的将清华源中的 https:// 改为 http:// 之后效果好很多)…

    Python 2023年1月16日
    018
  • 详细介绍 Numpy 中 genfromtxt 函数用法

    关注公众号:【 小张Python】,为你准备了 50+ 本Python 精品电子书籍 与 50G + 优质视频学习资料,后台回复关键字:1024 即可获取;如果对博文内容有什么疑问…

    Python 2023年1月11日
    029
  • 前后端分离-电商项目

    指在互联网(Internet)、内部网(Intranet)和增值网(VAN,Value Added Network)上以电子交易方式进行交易活动和相关服务活动 B2B(Busine…

    Python 2022年12月28日
    055
  • 7 步保障 Kubernetes 集群安全

    今天发生了一件大事特拉斯辞任英国首相,我想借着这件事情说下我看到的一件研发效能的荒唐事,这其中的关联也许就是「都用了不靠谱的人」。 两件事情 今儿一早就听到,2022年10月20日…

    Python 2023年1月30日
    024
  • os.path的使用

    os.path的使用

    Python 2022年9月16日
    0117
  • 数据分析小案例:招聘数据可视化,查看领域最需技术~

    前言 嗨喽~大家好呀,这里是魔王呐 在前一章:让我们用python来采集数据看看找工作都要会什么吧~ 我们讲了如何采集zhaopin网站数据,现在~ 我们来把数据可视化,更好的查看…

    Python 2023年1月7日
    023
  • 9大时序异常检测方法汇总

    异常检测(Anomaly detection)是目前时序数据分析最成熟的应用之一,定义是从正常的时间序列中识别不正常的事件或行为的过程。 有效的异常检测被广泛用于现实世界的很多领域…

    Python 2023年1月27日
    064
  • Testbench编写详解

    Testbench的编写说难也难,说易也易。之前有朋友私信留言谈到想系统学习下 Testbench,今天特意撰写这篇博客,其实说到底透过现象看本质,不同于功能模块的编写,Testb…

    Python 2023年2月5日
    015
  • Python使用numpy和Pandas来做数据分析

    目录 Numpy、Pandas模块包简介 数据操作分析实例操作: 环境准备 写代码实操部分 总结体会 Python语言自然不用多说了,专门做数据分析和数据挖掘、数据解刨的语言,模块…

    Python 2023年1月10日
    040
  • 基于U-Net网络的图像分割的MindStudio实践

    摘要:本实践是基于Windows版MindStudio 5.0.RC3,远程连接ECS服务器使用,ECS是基于官方分享的CANN6.0.RC1_MindX_Vision3.0.RC…

    Python 2023年2月2日
    015
  • 基于深度神经网络的中药材识别

    摘 要 近年来,受到我国国民经济发展与社会财富积累增速加快的影响,人们对自己的身体健康也越来越重视,很多的人都选择在服用中草药来治疗疾病、改善体质,因此,我国的中药材行业在这一段时…

    Python 2023年1月24日
    019
  • python的eval函数

    目录 1.eval函数的语法及用法 (1)语法:eval(expression) (2)作用:接收运行一个字符串表达式,返回表达式的结果值。 2.实例 (1)简单的计算用法 (2)…

    Python 2022年12月24日
    042
  • Pycharm 实现保存时修正格式(format_on_save)

    前言 VSCODE是近年来备受欢迎的轻量级代码编辑器,有一项非常实用功能——保存时修正代码格式(formatonsave)Pycharm作为一款IDE,虽然本身不具备此功能,但通过…

    Python 2022年11月10日
    070
  • MySql的InnoDB的三层B+树可以存储两千万左右条数据的计算逻辑

    总结/朱季谦 B+树是一种在非叶子节点存放排序好的索引而在叶子节点存放数据的数据结构,值得注意的是,在叶子节点中,存储的并非只是一行表数据,而是以页为单位存储,一个页可以包含多行表…

    2023年1月31日
    029
  • 【Spring系列】- Spring事务底层原理

    Spring事务底层原理 😄生命不息,写作不止🔥 继续踏上学习之路,学之分享笔记👊 总有一天我也能像各位大佬一样🏆 一个有梦有戏的人 @怒放吧德德🌝分享学习心得,欢迎指正,我们一起…

    Python 2023年1月29日
    018
最近整理资源【免费获取】:   👉 程序员最新必读书单  | 👏 互联网各方向面试题下载 | ✌️计算机核心资源汇总