【问题标题】:How do crawlers parse text from webpage?爬虫如何解析网页中的文本?
【发布时间】:2012-05-21 00:13:54
【问题描述】:

有像DOM这样的标准方法可以选择性地解析一个html页面,但我想知道爬虫(从小到大)如何检测到要分析的主要文本在哪里?

将被分析以捕获其关键字的主要文本与菜单、侧边栏、页脚等混合在一起。爬虫如何知道从菜单和侧面部分中跳过关键字?

我正在开发一个小型 PHP 项目,以从各种 HTML 页面中捕获关键字,但我不知道如何避免从侧面内容中捕获关键字。谁能描述或至少给我一个提示如何区分 HTML 页面中的主要内容和其他内容?

【问题讨论】:

  • 我不是在谈论搜索结果。例如,在解析当前页面时,如何识别正文是我的问题及其答案;不是侧边栏、相关问题列表、菜单、StackOverflow 注释等。我说的是编写爬虫,而不是如何控制爬虫处理我的网站的方式。
  • 看看Readability project,已经移植到PHP和Python了

标签: php dom html-parsing web-crawler


【解决方案1】:

侧边栏、菜单和页脚通常在整个网站的每个页面上重复出现。每个页面的实际内容通常是唯一的。您可以将其用作区分实际内容的指南。

爬虫还使用复杂的算法来分析页面上的文本以确定其作为内容的权重,而且它们往往不会分享他们的秘密。

没有快速简便的方法,爬虫开发者必须想出自己的创新方法,并集体采用这些方法来全面了解页面内容。

【讨论】:

  • 你是对的!爬虫技术确实很先进也很复杂,但是中小型爬虫也应该有一些技巧。
【解决方案2】:

如果内容是文字的,可以假设页面的主要内容是词密度相对较高的地方。

这意味着页面的主要内容与搜索引擎相关——页面的主要内容在 dom 元素中,其中大部分是 div,其中包括 p、em、b 等标签的文字数量是基本上对于文本格式,高于或高于阈值。

我将从以下逻辑开始

获取网页中使用的所有标签。

我将记下内容仅由文字和格式标记(如 p、em、b、li、ul 和锚标记)构成的 dom 元素。

我会留下只包含锚标记的 div,并假设它们用于导航目的。

现在从所有这些中选择数量高于特定阈值的 dom 元素。

此阈值因网站而异,您可以将其作为 avg(在具有特定 url 结构的网站的所有页面中具有最高字面量的 div 中找到的字面量)

算法必须在其过程中学习。

【讨论】:

  • 抱歉,打错字了;我的意思是word density。如何测量html标签池中的词密度?
猜你喜欢
  • 2018-01-26
  • 2012-07-14
  • 2012-09-12
  • 2013-05-04
  • 1970-01-01
  • 2019-04-17
  • 1970-01-01
  • 2018-10-03
  • 1970-01-01
相关资源
最近更新 更多