从网站中提取文本,例如只提取文章标题和文本,而不是网站中的所有文本



我正在寻找允许从网站提取文本的算法。我的意思不是"剥离html",或者任何允许这样做的库。

例如,对于一篇新闻文章,我想识别标题和所有文本,但不包括评论部分等。

有没有相应的算法?谢谢你!

在计算机科学文献中,这个问题通常被称为页面分割锅炉板检测问题。请参阅报告使用浅文本特征检测样板文件。此外,我还收藏了一些解决这个问题的报告和软件网站。另外,请参阅这个stackoverflow问题

有一些开源工具可以做类似的文章提取任务。https://github.com/jiminoc/goose是由Gravity.com开源的

它有wiki上的信息以及你可以查看的源代码。有几十个单元测试可以显示从各种文章中提取的文本。

"内容抽取"是一个非常困难的话题。没有通用的标准来识别"主要文章"内容(有几种方法可以使HTML更容易被爬虫阅读,例如schema.org,但这些方法都不是很常用)。

因此,如果您想要好的结果,最好为您想要抓取的每个(新闻)网站定义您自己的XPath选择器。虽然有一些用于HTML内容提取的api,但正如我所说的,很难开发一个适用于每个站点的算法。

一些可以使用的api:

alchemyapi.com
diffbot.com
boilerpipe-web.appspot.com
aylien.com
textracto.com

你要做的是所谓的"内容提取"。事实证明,这是一个难以解决的问题,许多天真的解决方案做得很糟糕。

Instapaper和Readability都必须解决这个问题,你可以从他们的解决方案中学到一些东西。它们也都提供了你可以利用的服务——也许你可以把你的问题外包给它们,让它们的API来处理。:)

如果做不到这一点,搜索"html内容提取"会返回大量有用的结果,包括许多关于该主题的论文。

我比较了几个不同的库,并在Mozilla的可读性库(Node)或它的Python包装器上取得了很大的成功。

以CNN的这篇文章为例:https://edition.cnn.com/2022/06/01/tech/elon-musk-tesla-ends-work-from-home/index.html

Readability成功返回相关数据:

New York (CNN Business) Elon Musk is demanding that Tesla office workers return to in-person work or leave the company. The policy, disclosed in leaked emails Musk sent to Tesla's executive staff Tuesday, was first reported by electric vehicle news site Electrek. "Anyone who wishes to do remote work must be in the office for a minimum (and I mean *minimum*) of 40 hours per week or depart Tesla. This is less than we ask of factory workers," Musk wrote, adding that the office must be the employee's primary workplace where the other workers they regularly interact with are based — "not a remote branch office unrelated to the job duties." Musk said he would personally review any request for exemption from the policy, but that for the most part, "If you don't show up, we will assume you have resigned."

等。

我认为你最好的拍摄是研究你能从元数据中得到什么信息,并编写一个好的html解析器,oEmbed可能是一个很好的标准=)

https://oembed.com/section7

相关内容

  • 没有找到相关文章

最新更新