汇总:爬虫系列之数据质量监控(一)

优采云 发布时间: 2022-10-19 12:18

  汇总:爬虫系列之数据质量监控(一)

  最近,SaaS平台、APP等产品在采集的数据中总是存在各种问题,比如标题被解析成代码,或者收录一段无用的字符,或者出现乱码等。

  以往的监控机制弊端似乎越来越大,已经不能满足数据监控的需要。

  随着数据类型越来越多,自定义采集脚本,涉及的人数越来越多,采集的难度不断增加,各种问题频频出现。

  为了制定一个真正能够实时监控数据质量,快速定位问题,及时反馈并快速迭代采集器或脚本的系统,在原有分散监控的基础上,增加了数据推送接口再次。分层集中监控。

  二、优缺点

  去中心化监控意味着每个 采集器 或脚本自己监控数据的质量。但有时由于任务紧急,或者为了省事,根本不加监控模块。

  集中监控是指在kafka统一推送接口处理数据质量、重载等;

  1)分散监控的优缺点:

  (1) 优势

  

  ①可以减轻统一推送界面的压力,缩短数据进入kafka的时间;

  ②降低异常接口的频率;

  (2) 缺点

  ①相关人员可能会修改监控指标,造成混乱,无法达到数据质量监控的效果,无法定位问题;

  ②可能由于任务紧迫,或者为了省事,根本没有添加监控重载机制,导致大量数据重复和劣质数据,影响ES性能,严重影响用户体验的产品。

  ③资源浪费。由于每个采集器或自定义脚本都需要考虑监控问题,无形中会增加大量重复性工作,增加人工成本;

  ④ 产品迭代慢。懒惰是人的本性。如果没有流程和机制的监督,大多数人会用最无故障的方法来处理问题。甚至以为是小问题,无关紧要,拖着就忘了。

  2)集中监控的优缺点:

  (1) 优势

  ①减少人力资源和其他资源的浪费;

  

  ②统一规范监控机制;

  ③预先定位异常问题,提升产品的用户体验;

  ④ 降低人为风险。

  ⑤ 根据监测结果,通过流程和指定,督促相关人员不断迭代产品。

  ⑥对于管理者来说,可以实时了解采集各个部分存在的问题,从全局角度思考,优化采集策略。

  ⑦根据监测结果,在一定程度上可以为管理者提供绩效考核的依据。

  (2) 缺点

  ①增加统一接口逻辑处理的复杂度,增加异常概率;

  ② 降低数据处理速度。综合考虑后,如果在可接受的范围内或者满足需要,可以暂时忽略。

  完整的解决方案:python脚本采集服务器数据通过API提交到django web服务器

  #定义请求头

  标头 = {

  "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",

  }

  #定义请求

  res =requests.post(url,数据=数据)

  #req = urllib.request.Request(url, data = sendData, headers = header, method = 'POST')

  #添加标题

  #req.add_header(headers = header)

  #发送请求

  #ope = urllib.request.urlopen(req)

  # 打印结果

  打印(res.content.decode())

  #print(ope.read())

  django创建项目,创建app,我这里创建了一个api应用

  api的urls.py文件配置信息

  

  从 django.conf.urls 导入 url

  从 。导入视图

  网址模式 = [

  url(r'^index/$', views.index,name='index'),

  # url(r'^getinfo/$',views.getinfo,name='getinfo'),

  url(r"^savecpu/$",views.saveCpu,name='saveCpu'),

  url(r"^showcpu/$",views.show,name='showcpu'),

  ]

  查看文件

  定义了2个函数

  def saveCpu(请求):

  """

  这个方法就是我们的接口方法,

  请求时,请求的数据将存储在数据库中

  """

  雕像 = {}

  if request.method == "POST" and request.POST: #检测请求的方式是post,post请求有数据

  

  #request.POST 该方法以字典的形式存储当前post请求的所有数据

  cpuUsed = request.POST["cpuUsed"] #使用类字典的value方法获取传递过来的cpu使用情况

  Times = datetime.datetime.now() #获取当前时间

  cpuDatabase = SaveCpu() #实例化SaveCpu的模型实例

  cpuDatabase.used = cpuUsed #将数据分配给模型

  cpuDatabase.time = times #同上

  cpuDatabase.save() #将模型映射到数据库

  status["statue"] = "success" #定义当前界面状态是否保存成功

  别的:

  status["statue"] = "request method must be post" #定义当前接口状态为失败

  return JsonResponse(statue) #将接口状态返回给请求者

  def 显示(请求):

  cpu = SaveCpu.objects.all()

  返回渲染(请求,“api/showData.html”,locals())

  # 在此处创建您的视图。

  代理端(python程序)不断采集到本地服务器的信息,数据通过api传到WEB服务器端(django)。格式存入数据库保存数据,从数据库中提取数据,在前端页面展示数据

  可能一个简单的服务器->代理是这样的

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线