各平台的获取方式不同,结果汇成一张表
受一家全球市场调研机构委托,我们在北美、拉美的主要零售平台和家电品牌自营店共十二处采集产品评论。各平台提供资料的方式不同,因此没有用单一采集器应对全部平台,而是按平台分别获取,再汇成统一格式的表。
评论资料获取
以前
各平台分别用不同方式获取
以后
十二处汇成一张统一格式的表
背景
在市场调研中,产品评论是原始资料。而评论所在之处,大多是访问条件最苛刻的大型 零售平台。调查方案虽已具备,却反复停留在取得资料这一步。
在现场看到的情况
各平台提供资料的方式不同。有的对请求间隔敏感,有的会因访问环境不同而返回不同 结果,有的只通过独立 API 下发评论区域。若想用单一采集器应对全部平台,则在哪里 都无法稳定运行。
定义的问题
决定按平台采用不同的接入方式,但此后的清洗、合并与输出统一为一条流程。因为采集 中断是个别平台的问题,而结果格式各异是整体的问题。
做出来的东西
- 按平台区分的采集引擎 —— 针对美国、巴西的主要零售平台和家电品牌自营店, 按各站点提供资料的方式分别接入
- 界面变化也不会导致数值错位 —— 部分平台不读取外观,而是通过 Chrome 扩展 直接引用页面已包含的内部数据
- 请求分散与三级并行采集 —— 不从一处集中发送,而是分路径接收。设计以文档 留存,保证可复现
- 统一输出 —— 无论什么平台,都落成统一格式的表
已防范的问题
对长达数日的采集中实际会发生的情况用代码处理,并通过26 项验证确认其按预期工作。
- 中断后恢复 —— 从已保存的进度点与实际已积累数量中较小的一侧重新开始。 重复获取的成本,小于事后才发现遗漏资料的成本
- 合并时去重 —— 以唯一标识符合并,已获取的资料原样保留
- 路径切换 —— 响应未到达或响应格式损坏时,切换路径并从中断处继续
- 形状不符的资料不会堆积在表中 —— 收到的值与预期格式不符时当场过滤
- 自动限制并行数 —— 指定值过大时自行调低。不集中冲击,是让为期数日的采集 走完全程的办法
结果
即使平台有十二处,结果也是统一格式的一张表。 不会因资料来自何处而改变列结构, 因此无需重新整理,可直接作为分析资料使用。即使目标增加一处,增加的也只是该平台 的接入方式,此后的清洗、合并与输出无需改动。
用同样方式完成的其他工作整理在网页数据采集中。
事实出处
外包服务合同