S

spider-ufo

环境配置

系统要求: nodejs@10.3.0+、yarn、pm2

运行方式:

  1. 执行 yarn安装项目依赖
  2. pm2 start process.json

配置文件config/index.js:

loggers:日志文件配置

database:ufo数据库配置

monitorReport:上报地址

爬虫

比价爬虫

spider-task

描述:根据/config/skns.json文件的skn爬取对应毒的价格数据。

执行频率:15分钟/次

步骤:

  1. 获得ufo尺码最新列表,作为之后爬取到的数据的尺码对应关系。
  2. 检查skns.json文件是否有更新,如果有更新则清理一次channel_sku_compare表中被删除的skn记录,避免skn从比价范围移除后依然有比价记录的情况。
  3. 轮训爬取毒的价格数据,并从尺码记录中得到尺码对应关系,插入或者更新channel_sku_compare,最后插入channel_sku_compare_record表。

ps: 其中如果skn是乐高产品,则强制毒的尺码关系对应到ufo的F码

calc-task

描述:每天根据channel_sku_compare_record表计算过去24小时skn的平均价

执行频率:每天10点15分执行一次

步骤:

  1. 获取过去24小时channel_sku_compare_record表数据
  2. 计算每个skn在过去24小时的平均价,去头去尾
  3. 更新channel_sku_compare表的channel_average_price平均价字段

clear-task

描述:定时清理超过三天的比价记录表channel_sku_compare_record数据

执行频率:每天23点59分执行

价格曲线

price-task

描述:全量更新毒和神箭手的数据维护到本地数据库

频率:每天1点10分执行

步骤:

  1. 循环调用毒接口获取毒数据写入本地数据库:db/du.json
  2. 调用神箭手批量接口获取数据写入本地数据库:db/shenjian.json

price-line-task/incre-relation-task

描述:维护毒、神箭手、ufo的关联数据

频率:每天2点10分执行

步骤:

  1. 获取本地数据库毒和神箭手的数据
  2. 获取ufo在上架的商品数据
  3. 根据货号匹配三个数据源的关系数据,并插入db/product-relation.json

price-line-task/price-day-task

描述:爬取ufo、毒、神箭手价格并根据比例计算价格曲线数据-当日

频率:2小时/次

步骤:

  1. 获取ufo的尺码数据,作为之后尺码对应关系
  2. 根据三个数据源的对应关系数据表:db/product-relation.json,循环获取三个数据源的skn数据。毒:调用毒接口获取数据(spider/du.js)、神箭手:调用神箭手接口获取数据库(spider/shenjian.js)、ufo:直接读数据库查询数据(spider/ufo.js)
  3. 拿到三端数据的价格之后根据预设比例计算曲线价格:(ufo:神箭手:毒:0.5:0.2:0.3、ufo:神箭手:0.7:0.3、ufo:毒:0.7:0.3、神箭手:毒:0.7:0.3、只有一种价格时以这个价格为准)
  4. 得到曲线价格收插入price_trend_day表

ps: 调用神箭手接口获得的数据需要进一步处理才能得到颜色尺码价格,需要先在数据的sku.label中找到颜色分类、鞋码后找到实际的sku数据价格,其中如果商品有两个颜色则把颜色属性的desc和货号匹配如果匹配上就按照这个颜色属性为准。

price-line-task/price-30day-task

描述:爬取ufo、毒、神箭手价格并根据比例计算价格曲线数据-30天

频率:每天1点、13点执行

步骤:

  1. 获取当天表的最新数据
  2. 插入30天表:price_trend_month

price-line-task/price-60day-task

描述:爬取ufo、毒、神箭手价格并根据比例计算价格曲线数据-60天

频率:每天1点1分执行

步骤:

  1. 获取当天表的最新数据
  2. 插入60天表:price_trend_sixty_day

price-line-task/price-180day-task

描述:爬取ufo、毒、神箭手价格并根据比例计算价格曲线数据-180天

频率:每天1点2分执行

步骤:

  1. 判断三天内是否执行过
  2. 如果没有执行过,获取当天表的最新数据
  3. 插入180天表:price_trend_half_year

price-line-task/clear-task

描述:清理价格曲线数据:

当日price_trend_day的三天前数据

30天price_trend_month的30天前数据

60天price_trend_month的60天数据

180天price_trend_half_year的180天钱数据

频率:每天1点3分执行

毒接口检测

check-du-task

描述:检测毒h5页面中接口调用的版本号,如果版本号发生变化则钉钉报警

频率:1小时/次

监控

dashboard:UFO爬虫

link: http://g.yohops.com/dashboard/db/ufopa-chong?refresh=1h&orgId=1

  1. 比价爬虫上报更新成功数、清理失败、计算平均价失败监控
  2. 价格曲线的当日、30天、60天、180天新增价格数据数监控
  3. 每日毒、神箭手全量更新的数量监控
  4. UFO、毒、神箭手关系表每日新增数监控
  5. 价格曲线数据每日清理数量监控