数据收集的操作行为受到越来越多的关注,也变得越来越复杂。网络抓取以及自动获取过程总体来说极大地改变了数据收集的性质,旧的挑战得到解决,而新的问题也随之浮现出来。
其中一个问题就是关于动态性的数据选择。由于现在我们能够在几秒内收集难以想象的巨量信息,进行特定采样不再是问题。此外,在业务上,我们常常会反复搜寻相同来源,以监控友商、品牌以及对于行业相关的其他任何内容。
因此,数据动态性就是一个优化问题。在一些情况下,特定字段可能不会频繁更新,或者对于用例来说这些更改并不重要,因此可能不需要每次刷新数据。
静态与动态数据
静态数据可以通过两个方面来定义。作为信息对象,静态数据是不会(频繁)变化的对象。这种来源的例子可能包括社论文章、国家/地区或城市名称、活动和场所说明,等等。事实新闻报道一经发表,就不大可能在未来发生改动。
另一方面,动态数据是不断变动中的对象,常常是由于外部因素而发生变化。经常遇到的动态数据类型可能是产品定价、库存数量、预订数量,等等。
它们中间存在两大定义的模糊地带,正如企图将一切东西都放入整整齐齐的小盒子那样。产品说明、文章元标题和内容商业片段等信息对象有一定的变化频率。
这些到底属于静态还是动态数据,取决于预期用途。无论数据类型如何,项目或多或少会利用具体的参考来源。例如,SEO 工具可能发现定价数据的价值较低,但会希望更新元标题、描述和其他许多功能。
另一方面,定价模型则很少用到频繁更新的产品描述。它们可能需要抓取该信息一次,以进行产品匹配。如果将来出于 SEO 目的对其进行更新,那么仍然没有理由再次访问描述。
规划数据
每个数据分析和收集项目都有其必要性。回到前面的定价模型例子,这需要两个技术功能:产品比对和定价数据。
产品需要进行比对,因为任何自动定价实施都需要准确性。错配的产品和变化的定价可能会对营收造成巨大损失,尤其是如果这些变化得不到解决的情况下。
大部分比对工作是通过产品标题、描述和规格进行的。前两者会经常变化,尤其是在电商平台中,其中关键词优化是一项重要的排名因素。不过,它们不会影响比对产品编号的能力,因为基础功能不会变化(例如,iPhone 始终是 iPhone)。
因此,描述和标题可以视为静态数据,即使它们有一点动态性质。就项目用途而言,变化的影响力不够大,不值得继续监控。
可能显而易见的是,定价数据不仅自然而然地在不断变化,而且捕捉发生的任何变化对于项目也十分重要。因此,它当然应该视为动态数据。
通过规划降低成本
无论采用的是内部还是外部集成方法,数据收集和存储实践的成本都非常高。此外,大部分公司将使用基于云的存储解决方案,其中可能会将所有写入操作包括到总体成本中,这意味着更新数据将会削减预算。
规划数据类型(即静态还是动态)可以通过多个途径优化数据收集过程。首先,页面可以分为静态数据、动态数据或混合数据。虽然第一个类别可能有点肤浅,但它仍表示不需要频繁再访问这些页面。
利用混合页面可能也更容易降低写入操作和存储成本。降低从一个地方传输到另一个地方的数据量,这本身就是一种优化形式,但这些在考虑到带宽、读写和存储成本时会变得更加有意义。
不过,由于爬虫通常会下载整个 HTML,对 URL 的任何访问都会将整个对象存储在内存中。使用外部提供商时,通常会针对每个请求分配成本,因此更新所有数据字段与仅更新动态字段之间没有区别。
然而,在一些应用场景中,历史数据可能是必要的。每个时间段下载并更新含有相同数据的相同字段会无缘无故地增加写入操作和存储成本。可以实现一个简单的比较函数来检查是否有任何更改,并仅在更改时执行写入操作。
最后,使用内部抓取系统时,上述全部情况仍然适用,但程度要大得多。想要优化成本,可以减少不必要的抓取,限制写入操作数量,并仅解析 HTML 的必要部分。
最后,开发框架是实现真正优化的第一步措施。它们可能一开始过于理论化,就像这个框架那样,但框架让我们能够更好地解读已经实施到位的过程。
作者:Julius Cerniauskas,Oxylabs 首席执行官
A5创业网 版权所有