Python:检测字符串中的实际文本段落

Python:检测字符串中的实际文本段落,python,html,text,screen-scraping,Python,Html,Text,Screen Scraping,最大的任务:我正试图得到一个网页的几行摘要。i、 我想有一个函数,它接受一个URL并返回该页面中信息量最大的段落。(这通常是实际内容文本的第一段,而不是“垃圾文本”,如导航栏。) 因此,我设法将一个HTML页面缩减为一堆文本,方法是删除标记,扔掉和所有脚本。但有些文本仍然是“垃圾文本”。我想知道文本的实际段落从哪里开始。(理想情况下,它应该是人类语言不可知论的,但如果你有一个只针对英语的解决方案,那也可能有帮助。) 我怎样才能知道哪些文本是“垃圾文本”,哪些是实际内容 更新:我看到一些人建议我使

最大的任务:我正试图得到一个网页的几行摘要。i、 我想有一个函数,它接受一个URL并返回该页面中信息量最大的段落。(这通常是实际内容文本的第一段,而不是“垃圾文本”,如导航栏。)

因此,我设法将一个HTML页面缩减为一堆文本,方法是删除标记,扔掉
和所有脚本。但有些文本仍然是“垃圾文本”。我想知道文本的实际段落从哪里开始。(理想情况下,它应该是人类语言不可知论的,但如果你有一个只针对英语的解决方案,那也可能有帮助。)

我怎样才能知道哪些文本是“垃圾文本”,哪些是实际内容


更新:我看到一些人建议我使用HTML解析库。我正在用漂亮的汤。我的问题不是解析HTML;我已经去掉了所有的HTML标记,我只有一堆文本,我想把上下文文本从垃圾文本中分离出来。

这个问题的一般解决方案是一个非常需要解决的问题

从上下文来看,谷歌在搜索方面的成功很大一部分来自于他们能够自动识别任意网页的语义,即找出“内容”在哪里

脑海中浮现的一个想法是,如果您可以从同一个站点抓取多个页面,那么您将能够识别模式。所有页面之间的菜单标记基本相同。如果你以某种方式将其归零(需要相当“模糊”),剩下的就是内容

下一步将是确定文本以及什么构成边界。理想情况下,这将是一些HTML段落,但你不会得到那么幸运的大多数时间

更好的方法可能是找到该站点的RSS提要,并以这种方式获取内容,因为这将按原样剥离。忽略任何AdSense(或类似)内容,您应该能够获得文本


哦,绝对要扔掉你的正则表达式代码。毫无疑问,这需要一个HTML解析器。

可能有点过火了,但您可以试试自然语言工具包。该库用于解析自然语言。这是一个相当不错的图书馆,也是一个有趣的主题。如果你只想从课文中获得句子,你可以做如下操作:

>>> import nltk
>>> nltk.sent_tokenize("Hi this is a sentence. And isn't this a second one, a sentence with a url http://www.google.com in it?")
['Hi this is a sentence.', "And isn't this a second one, a sentence with a url http://www.google.com in it?"]

或者您可以使用
PunktSentenceTokenizer
类中的方法。在开始之前,您必须执行
nltk.download()

我建议你看看它能做什么。可读性除去页面的实际内容之外的所有内容,并对其重新设计样式以便于阅读。从我的经验来看,它在检测内容方面似乎效果很好


看看its(特别是
grabArticle
函数),也许你可以得到一些想法。

你可以使用AI depot博客中概述的方法以及一些python代码:


你能发布你的文本样本吗?你希望它变成什么?关于使用正则表达式解析HTML-强制链接-这里有一个网页文本示例:它恰好是Python文档中的一个页面。我删除了
[regex]
标记,因为它似乎诱使人们认为您试图使用正则表达式从页面中提取文本,但你的问题根本不是这个。这实际上是一个文本处理问题。它与HTML几乎没有任何关系;事实上,文本是从网页中提取的并不重要,除非你想尝试使用HTML标记来帮助你识别重要的文本。克莱特斯,HTML不是问题。这些标签我不感兴趣,我把它们都扔掉了。我考虑使用regex的原因是使用它来判断哪些文本是流动的段落,哪些是来自导航栏的链接文本(或其他小块文本)