据我所知,人们总是会把网上公共数据的有用性与提取和整理这些数据的工作量进行对比。然而,从原始数据产生结构良好的已解析输出,需要花费大量的时间、精力和资源。即使在部署初始原型之后,也经常需要进行维护。
考虑到规模的问题之后,往往只有少数公司才会选择进行数据解析。更麻烦的是,由于多年以来 HTML 的使用方式的性质,网络数据解析还面临独特的挑战。不过,利用 Oxylabs 提供的自适应解析器之类的功能,所有这些挑战都不是问题。
什么是数据解析?
所有网络抓取活动都依赖一个特定的操作——提取数据。最开始要做的事情都是下载HTML。遗憾的是,虽然 HTML 在大多数情况下包含所有必要信息,但其构造方式不适合进一步分析。这也不能算是HTML本身的错。HTML 这种语言原本是旨在由浏览器读取,并转换为在视觉效果上对于用户很理想的最终结果。它在结构上非常灵活,允许开发人员采取创造性的方法来创建最终结果。
但是,这些创造性的方法经常造成数据以不同的方式散布在各个地方。为了从 HTML 搜集信息,分析人员需要设法解析、整理和标准化数据点。通常,接下来还要采取的步骤是编写定制脚本或一些帮助程序工具,以定义数据处理规则并使其更有条理。
以 JSON 或 CSV 等结构化格式检索数据是比较理想的情况。但是,这完全行不通,至少在目前的格局下是这样。因此,从 HTML 衍生的数据需要进行解析,才能变得有条理。
数据解析面临的挑战
谈到外部获取(通常是从原始 HTML 获取)的数据,存在一个主要的问题,这个问题源自两个因素:解析的绝对必要性和 HTML 的高比例使用。由于 HTML 用于通过浏览器直观表示内容,因此,对原始 HTML 执行任何类型的分析都会效率低下。
由于不同网站的网络开发实践千差万别,要拿出一个通用的解析器极其困难。例如,在两个电商网站上,同一款产品的页面可能看起来非常相似,并且包含相同的信息,但底层的 HTML 却并不相同。因此,相同的解析器行不通,开发人员需要为每种情况开发定制化解决方案,或者开发一个更复杂的解析器来处理各种差异。随着更多的网站等待解析,这种局面也会变得越来越复杂。
即使对于相同的数据源,一个解析器可能也不够。例如,电商平台往往有多种布局和页面类型散布其间。解析需要针对每一种类型使用定制方法。有一些帮助程序工具,需要花费精力去掌握,但是,即使这些工具也不能做到一劳永逸,因为这些页面必然会随时间而变化。
将 HTML 的灵活性和嵌套性质相结合,这样的任务对于分析人员来说相当棘手。雪上加霜的是,复杂性远不止于此。网站常常会改变布局,或增加新的功能,而这些都会影响解析器。面对这些变化,解析器也需要相应进行更新来匹配新的外观。
再加上需要从不计其数的来源获取数据,以及解析 HTML 进行数据分析的困难重重,这项工作很快就会变得令人望而生畏。已经有专属开发人员团队的大型企业或许还有机会维护数量庞大的抓取器和解析器。较小的企业往往只能彻底外包这项工作。
外包解析工作确实也有好处。对于较小的用例来说,比起组建开发人员团队、进行协调组织、创建解析器并加以维护,外包方法的人力资源和资本的总体成本往往更低。此外,虽然外包解析工作会让小企业更依赖外部力量,但这样解决了适应不断变化的布局和潜在服务中断的难题(服务中断仍会发生,只是持续时间较短)。
人工智能的优势
为一个任务编写一个简单的解析器,对于较小的开发团队来说可能再正常不过了。但是,真正的挑战在于规模。每增加一个新的来源,至少需要好几个新的定制解析器。维护日益增加的解析器是极其耗费资源的。由于网络上的数据散布在不计其数的报纸、论坛、社交媒体和其他渠道,采集和加载这些数据需要大量时间和资源才刚够完成解析过程。
利用机器学习给我们带来了希望。毕竟,HTML 是用于创建人类可读的网站。虽然很多时候殊途同归,但在大多数情况下,当网站进行重新设计时,大家仍然可以使用它。然而,与此同时,不同网站之间的编程差异绝不会太大。这就表明,某种类型的机器学习方法是可行的。
我们在 Oxylabs 已经做了一些类似的工作。我们的其中一个解决方案是“下一代住宅代理”(Next-Gen Residential Proxies),融合了数据获取和人工智能的原则。它省去了所有其他花哨的功能,侧重实现了自适应解析,这是我们迄今为止最了不起的成就。
在深入介绍我们创建首批自适应解析器版本的过程之前,我需要提一下的是,我们并不是完全单打独斗。我们内部甚至并没有关于机器学习和人工智能的太多经验。我们只是深知各种可能性。因此,我们汇聚了世界各地的机器学习专家,并同时吸纳了学术研究人员和具备实践专长的人员。
我们的人工智能顾问委员会帮助我们开发了解决方案,并进而推动了自适应解析功能的诞生。人们可以使用自适应功能从任意电商产品页面获取结构化数据。关于直观表示,请参见下面的图片:
我们使用了受监督的机器学习模型来馈送所需的数据。如您所想象的那样,这个过程其实并没有我们最初设想的那样复杂和困难。
但是,获取包含带标签字段的足够大的训练数据集需要耗费非常多的人力(或财力)。即使对于能够支持内部开发团队和专属机器学习专家的更大型企业,我也会留意合适的服务提供商。大多数时候,我们会评估第三方抓取服务提供的定价模型和功能,这样才能做出最佳的决策。
结论
网络数据解析是一个极其耗费人力的过程,而为了获取可用信息,这个过程又是绝对必要的。HTML 解析有自身独特的一系列问题,困扰着整个解析过程。虽然创建一个 HTML 解析器可能并不难,但对于任何大规模网络数据获取过程,可能需要几十个解析器。
因此,解析的方法也在发生变化。维护内部网络抓取和解析解决方案不再是必要的。基于人工智能的下一代解决方案应运而生,真正交付数据即服务 (data as a service)。随着解析技术的改进,前所未见的数据分析新用例也将出现。即使是现在,要针对最细粒度的用例搜集洞察,也只需发送几个请求即可。
文章内容来自网络,如有侵权,联系删除、联系电话:023-85238885
参与评论
请回复有价值的信息,无意义的评论将很快被删除,账号将被禁止发言。
评论区