从网站中提取正文文本,例如仅提取文章标题和文本而不是站点中的所有文本
Posted
技术标签:
【中文标题】从网站中提取正文文本,例如仅提取文章标题和文本而不是站点中的所有文本【英文标题】:Body Text extraction from websites e.g. extract only article heading and text not all text in site 【发布时间】:2011-08-10 09:28:38 【问题描述】:我正在寻找允许从网站提取文本的算法。我的意思不是“剥离 html”,或者数百个允许这样做的库中的任何一个。
例如,对于一篇新闻文章,我想识别标题和所有文本,而不是 cmets 部分等等。
那里有任何算法吗?谢谢!
【问题讨论】:
我认为您正在寻找的短语是“网络抓取” 【参考方案1】:在计算机科学文献中,这个问题通常被称为页面分割或样板检测问题。请参阅报告Boilerplate Detection using Shallow Text Features 及其相关的blog 帖子。另外,我有一些报告和软件站点bookmarked 可以解决这个问题。另请参阅this*** 问题。
【讨论】:
谢谢...帮了大忙!【参考方案2】:我认为你最好的拍摄是研究你可以从元数据中获得什么信息并编写一个好的 html 解析器,oEmbed 可能是一个很好的标准 =)
https://oembed.com/#section7
【讨论】:
【参考方案3】:“内容提取”是一个非常困难的话题。没有通用的标准来识别“主文章”的内容(有几种方法可以让爬虫更容易阅读 HTML,例如schema.org,但这些都不是很流行)。
事实证明,如果您想要好的结果,最好为您要抓取的每个(新闻)网站定义自己的 XPath 选择器。虽然有一些用于 HTML 内容提取的 API,但正如我所说,开发适用于每个站点的算法非常困难。
您可以使用的一些 API:
alchemyapi.com diffbot.comboilerpipe-web.appspot.comaylien.comtextracto.com
【讨论】:
【参考方案4】:有一些可用的开源工具可以执行类似的文章提取任务。 https://github.com/jiminoc/goose 由 Gravity.com 开源
它包含关于 wiki 的信息以及您可以查看的源代码。有几十个单元测试显示从各种文章中提取的文本。
【讨论】:
【参考方案5】:您尝试执行的操作称为“内容提取”。事实证明,要很好地解决这个问题出奇地难,而且许多幼稚的解决方案做得很糟糕。
Instapaper 和Readability 都必须解决这个问题,你可以从他们的解决方案中学到一些东西。他们还提供您可以利用的服务——也许您可以将您的问题外包给他们,让他们的 API 处理它。 :)
如果不这样做,搜索“html content extraction”会返回大量有用的结果,包括有关该主题的大量论文。
【讨论】:
以上是关于从网站中提取正文文本,例如仅提取文章标题和文本而不是站点中的所有文本的主要内容,如果未能解决你的问题,请参考以下文章
从 MBOX 文件中提取纯文本/文本和 html 正文到列表
在 Python 中提取和清理 HTML 正文文本的最快、最无错误的方法是啥?