如何通过数据解析减少数据中的噪音

0
如何通过数据解析减少数据中的噪音

互联网上充满了我们可以使用的有用信息。 然而,与此同时,它充满了可能对数据分析有害的隐藏噪音。 例如,如果你加载这个 维基百科页面,它将向您展示一些结构化的内容,您可以轻松地解析和搜索该给定主题所需的相关信息。 但是,计算机对事物的看法不同。 为了以简单的方式放置内容,浏览器理解底层的 HTML 源代码并呈现它,以便您看到该结构。 如果您查看该页面的源代码(右键单击 -> 查看源代码),您将看到浏览器对呈现内容的解释。

浏览器看到的所有来源都与以愉快的方式呈现内容相关。 但是,如果您只是想执行一些数据分析,那么大部分都是无关紧要的。 假设您想查找文章标题中最常用的词。 您不需要为此存储所有 Wikipedia 数据。 实际上,您确实需要下载所有页面,但您可以解析它们并仅提取相关信息(部分标题)并仅存储该数据。 这使分析任务变得更加容易,您只需要处理字符串而不是 HTML 以及标题在此 HTML 中的位置。 这种策略可以看作是去除噪声,因为它将数据减少到只对您重要的数据,并且解析在其中起着重要作用。

什么是数据解析?

维基百科, “解析是分析一串符合形式语法规则的符号的过程”. 在这里,我们正在研究一种不同的解释,其中我们只提取网页的相关信息(一串符号),而忽略与我们的目标无关的内容。 这旨在我们的目标是减少噪音并将数据放入某种结构中。 当然,我们可以使用原始 HTML 页面从那里提取一些东西,但通常,我们只对页面上可用内容的子集感兴趣。

例如,如果您想对产品进行价格分析,您可能会认为图像与您的上下文无关,然后将它们排除在外,通过只关注您真正需要的内容来降低存储和处理成本。

以这种方式,数据解析的第一步是确定您需要从页面中获得哪些相关信息。 一旦清楚了,我们就可以继续构建解析器。 假设我们要从 Wikipedia 中提取页眉,您可以通过以下方式实现:

  1. 加载页面 https://en.wikipedia.org/wiki/Parsing
  2. 右键单击标题“Parsing”,然后选择“inspect”选项,它应该会显示该标题的 HTML 内容。 以一种简单的方式,这就是浏览器理解页面元素应如何放置以显示内容的方式。 出现的这个页面/模式对话框被称为浏览器开发工具。
  1. 现在单击开发工具中的控制台选项卡。
  1. 现在输入 document.querySelector(‘#firstHeading’).innerText 并按 Enter。

这是一个简单的解析规则,用于查找任何 Wikipedia 页面的标题。 document.querySelector 是浏览器的内置函数,用于在页面中查找 HTML 元素,基于 CSS 选择器 查询(另一种常见的方法是使用 XPath)。 然后,我们给它一个选择器来查找页面标题; 然后我们用 .innerText 询问该标签的内容。

大规模数据解析

上一节中的示例是从网页中解析一些数据的常见案例。 由于 HTML 并非在所有站点中都遵循标准结构,因此我们需要对需要构建的每个解析器执行此检查。 正如您可以想象的那样,一旦我们想要扩展,这很快就会变得不切实际。 为了克服这些问题,已经构建了一些语义标记来通知解析器有关页面上的相关信息。 此功能的第一次尝试是 HTML 微数据,这是一种将一些元数据添加到包含可能对计算机有用的信息的标签的规范。 这样,页面可以标记我们可以自动解析的内容。 渐渐地,其他方法开始出现,比如 RDFa, JSON-LD, 或者 Facebook的开放图.

给你一个想法,当你在 Facebook 上分享一个 URL 并发布一个缩略图和有关内容的一些其他信息时,它可能来自该页面上存在的这些标记中的一些。 但是,并非您需要的所有数据都存在于这些标记中,或者有时,开发人员决定不将数据也放在那里; 然后我们需要回到编写解析规则或构建新技术来解析数据的常见案例。

由于我们不能依赖所有的网站来填充他们这边的语义数据,解决这个问题的一个解决方案是构建工具来执行自动数据提取。

那么,在 Zyte,我们如何使任何网站的爬网工作? Zyte 自动提取 API 利用人工智能技术自动提取页面上的相关信息。 例如,在对产品进行类别爬取时,我们从产品列表的第一页开始,我们的工作是检测到单个产品的链接,以及到下一页的链接。 我们通过向我们的产品列表提取 API 发出请求来做到这一点,该 API 返回产品列表,其中包含指向详细产品页面的“URL”字段。 下一页的 URL 也作为分页支持的一部分出现在 Product List API 中。 一旦我们获得了单个产品的 URL,我们通过产品提取 API 传递它们,收集每个产品的详细信息,然后进入下一页。 这只是我们现有的抓取策略之一,但它们都是通用的,并且依赖于 Extraction API 来适应各个网站。

另一种常见情况是从特定新闻源中提取所有文章。 在这种情况下,我们会跟踪所有链接,并依靠新闻和文章提取 API 来发现哪些页面是文章,并仅提供那些页面。

你可以试试 Zyte 自动提取 获取您需要的数据或与我们的专家团队交谈,为您完成工作。

Leave a Reply