crawler.md
4.99 KB
publish
账号信息
【iconfont】 http://iconfont.cn yue.liu@yoho.cn/yohoicon
UFO 爬虫
仓库地址
http://git.yoho.cn/fe/spider-ufo
-
目前只用到比价功能(price-task),神箭手废弃
// 每天的凌晨1点10分触发,全量更新毒的价格数据 // 仅生成productId对应关系,并存到数据库 schedule.scheduleJob('0 10 1 * * *', () => { logger.info('[process]task start priceTask'); priceTask() }); // 整点执行对应关系表中所有商品的价格对比 schedule.scheduleJob('0 0 * * * *', () => { logger.info('[process]task start spiderAllTask'); // 比价任务-all spiderAllTask(dayjs().unix()); }); // 每隔15分钟获取固定对应关系的商品数据 // /data/skns.json schedule.scheduleJob('0 */15 * * * *', () => { logger.info('[process]task start spiderTask'); // 比价任务 spiderTask(dayjs().unix()); });
## 需求
我们用户量少,价格不透明,为了防止恶意出价,需要与有一定权威的出价比对。
DU app用户量多,自然形成了市场经济。所以有了爬虫项目。
## 数据爬取原理
du APP商品的spuId从0递增,故目前实现方案是遍历访问Du H5详情页 https://m.poizon.com/router/product/ProductDetail?spuId=249&sourceName=shareDetail 获取商品数据,根据商品编号相同获取对应关系
// 预估,需要手动递增 let productIds = 82000;
for(let i=0; i<productIds; i++) { fetch(i); }
获取du所有商品
## 发布时需要修改的潜在bug
// price-task.js中会在启动时获取所有的du.json文件的数据 const allData = await DuDataModel.findAll();
因为该文件没有清理,会累加。
node v8的内存限制为 64位系统约为1.4GB,32位系统约为0.7GB
当文件大小超过内存限制时启动回报out-of-memory错误,需要手动备份下
![](https://cdn.nlark.com/yuque/0/2020/png/193477/1585277751900-d85a46c4-24f8-4590-b09a-89b31a1433f3.png?x-oss-process=image/resize,w_1492)
**环境发布**
注:需要堡垒机权限,没有就找运维申请
登录堡垒机,选择爬虫机器
![](https://cdn.nlark.com/yuque/0/2020/png/193477/1584412736620-b1a4f4ee-1600-4d11-a5eb-620d4abd8993.png#align=left&display=inline&height=42&originHeight=42&originWidth=288&size=0&status=done&style=none&width=288)
项目目录/Data/node/spider-ufo/
/db 文件数据库目录
git pull代码
pm2 list | ls查看运行项目
pm2 stop appName|id 停止项目
pm2 restart spider-ufo 重启
pm2 logs 查看运行状态
**关键文件目录**
1.数据存储目录 /Data/node/spider-ufo/db
![](https://cdn.nlark.com/yuque/0/2020/png/193477/1584412736680-a9232c21-a194-47a0-9b05-f83d7a9948d9.png#align=left&display=inline&height=18&originHeight=18&originWidth=396&size=0&status=done&style=none&width=396) 毒全量商品数据(可精简)
![](https://cdn.nlark.com/yuque/0/2020/png/193477/1584412736579-55e20cc9-2899-4ea7-b1ea-6d8dca33d203.png#align=left&display=inline&height=17&originHeight=17&originWidth=483&size=0&status=done&style=none&width=483) ufo商品与毒商品的对应关系(神箭手已停)
2.爬取日志目录 /Data/logs/node/
3.每天爬取的毒全量数据日志目录 /Data/logs/node/prices/
![](https://cdn.nlark.com/yuque/0/2020/png/193477/1584412736640-117631b9-e750-4f98-95b2-faffac3be799.png#align=left&display=inline&height=66&originHeight=66&originWidth=429&size=0&status=done&style=none&width=429)
**常见问题定位**
1.ufo比价与毒的价格不一致
查询ufo与毒的货号进行对比
查询ufo与毒的关系文件,是否有对应关系,如果存在对应关系,则查找爬取日志找到对应商品尺码的各种日志,如果不存在对应关系,则查找毒全量商品数据是否存在该商品并对比货号(注意空格或特殊字符)
**上传数据查询**
yoho运维平台->其他->sql通用查询
当前数据源: ufo DB列表: ufo_product
```select * from channel_sku_compare where product_id = 10044469```
**后续优化**
1.毒全量商品数据存储精简,只需要存储ID,货号等必要信息
2.进行增量更新或部分增量更新,对已爬取的毒商品数据不进行抓取或每周抓取,以及根据对应关系抓取后的数据不一致时进行更新
3.更换存储介质
**代码**
![](https://cdn.nlark.com/yuque/0/2020/png/193477/1584412736673-850a0f0d-edb5-445b-b2b8-f244530ec5d7.png#align=left&display=inline&height=1294&originHeight=1294&originWidth=1336&size=0&status=done&style=none&width=1336)
# 毒销售数据爬虫
**仓库地址**
[http://git.yoho.cn/fe/spider-du](http://git.yoho.cn/fe/spider-du) (目前已停用)
# 闲鱼UFO销售数据报表
**仓库地址**
[http://git.yoho.cn/fe/yoho-dashboard-ufo](http://git.yoho.cn/fe/yoho-dashboard-ufo)