网络爬虫如何解析网页文本?

4

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

主要文本,将被用于捕捉其关键词,与菜单、侧边栏、页脚等混合在一起。爬虫如何知道跳过来自菜单和侧边栏的关键词?

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


我不是在谈论搜索结果。例如,在解析当前页面时,如何识别主要文本是我的问题及其答案;而不是侧边栏、相关问题列表、菜单、StackOverflow注释等。我谈论的是编写爬虫,而不是如何控制爬虫处理我的网站的方式。 - Googlebot
看一下可读性项目,它已经被移植到PHP和Python。 - Maxim Krizhanovsky
2个回答

2
侧边栏、菜单和页脚通常在整个网站的每个页面上都会重复出现。实际内容通常是每个页面独有的。您可以将此用作区分实际内容的指南。
网络爬虫还使用复杂算法来分析页面上的文本,以确定其作为内容的权重,并且它们倾向于不分享自己的秘密。
没有快速简单的方法,网络爬虫开发人员必须想出自己的创新方法,并共同采用这些方法来获得页面内容的整体图片。

你说得对!网络爬虫技术确实非常先进和复杂,但是对于小型和中型爬虫来说,也应该有一些技巧可用。 - Googlebot

0

如果内容是文本性的,您可以假设页面的主要内容在单词密度相对较高的位置。

这意味着与搜索引擎相关的页面的主要内容--页面的主要内容在dom元素内部,大多数为div,其中包含文字格式标签,例如p,em,b等等,数量较高或超过阈值。

我将从以下逻辑开始

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

我将记录由仅包含文字和格式标记(如p、em、b、li、ul和anchor标记)组成的dom元素。

我会留下仅包含锚点标记的div,并假定它们是用于导航目的。

现在,在所有这些标记中选择数字高于特定阈值的dom元素。

此阈值因网站而异,您可以将其视为特定url结构的所有页面中具有最高文字数的div的平均值。

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


抱歉,那是个笔误;我指的是“词密度”。如何在一堆HTML标签中测量词密度? - Googlebot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接