通过BeautifulSoup或其他基于python的提取器识别大型文本体

通过BeautifulSoup或其他基于python的提取器识别大型文本体,python,beautifulsoup,web-crawler,Python,Beautifulsoup,Web Crawler,鉴于此,我想编写一个网络爬虫来查找当前最大的文本体,并将其提取出来。目的是提取页面上的物理新闻文章 最初的计划是使用一个beautifulsoupfindall(True),并根据其.getText()值对每个标记进行排序EDIT:不要在html工作中使用它,使用lxml库,它基于python,比BeautifulSoup快得多。命令(这意味着提取所有html标记) 但这对大多数页面都不起作用,比如我作为示例列出的页面,因为大量文本被分割成许多较小的标记,比如段落分隔符 有没有人有这方面的经验?

鉴于此,我想编写一个网络爬虫来查找当前最大的文本体,并将其提取出来。目的是提取页面上的物理新闻文章

最初的计划是使用一个
beautifulsoupfindall(True)
,并根据其
.getText()
值对每个标记进行排序EDIT:不要在html工作中使用它,使用lxml库,它基于python,比BeautifulSoup快得多。命令(这意味着提取所有html标记)

但这对大多数页面都不起作用,比如我作为示例列出的页面,因为大量文本被分割成许多较小的标记,比如段落分隔符

有没有人有这方面的经验?任何像这样的帮助都将是惊人的

目前,我正在使用BeautifulSoup和python,但我愿意探索其他可能性


编辑:几个月后回到这个问题(哇,我听起来像个白痴^),并结合库和自己的代码解决了这个问题。 以下是一些对任务非常有用的python库,按照它对我的帮助程度排序:

#1快速、强大、一致 #2内容还算可以,平均比鹅慢,但比锅炉管快 #3速度较慢且安装困难,boilerpipe库(最初是java版本)没有故障,但该库构建在另一个java库之上,这归因于IO时间和错误等

如果有兴趣,我可能会发布基准测试


间接相关的库,您可能应该安装它们并阅读它们的文档:

  • 这个 太好了,不能不安装。它们提供文本分析工具 使用html工具(如清理等)
  • 提及 在上面除了可用性,这在各个方面都胜过了BeautifulSoup。这是一个 虽然学习起来有点困难,但结果是值得的。HTML解析需要很多时间 少了很多时间,这是非常明显的
  • 我认为这段代码的价值不是 lib本身,但使用lib作为参考手册来构建自己的 爬虫/提取器。这是非常好的编码/记录
python是一种速度相当慢的语言,它的许多价值和能力来自它的开源库。当它们组合在一起使用时,它们特别棒,每个人都应该利用它们来解决他们可能遇到的任何问题


Goose库得到了大量可靠的维护,他们刚刚添加了阿拉伯语支持,太棒了

我想说,你真的没有采取正确的方式,上面所有的评论都可以证明这一点

也就是说,这就是你想要的

from bs4 import BeautifulSoup as BS
import requests
html = requests.get('http://www.cnn.com/2013/01/04/justice/ohio-rape-online-video/index.html?hpt=hp_c2').text
soup = BS(html)
print '\n\n'.join([k.text for k in soup.find(class_='cnn_strycntntlft').find_all('p')])
它只提取文本,首先找到所有
标记的主容器,然后只选择
标记本身来获取文本;忽略
和其他不相关的内容


正如评论中提到的,这只对CNN有效——而且可能只对这一页有效。您可能需要为每个新网页使用不同的策略。

您可以查看为您提供这种功能的软件包。

选择解析器与您的问题有什么关系?你的实际问题是什么?我想问题是如何从页面中提取文章的文本,并留下所有垃圾,如菜单、其他文章的链接、广告等。显然,你在Python中使用BeautifulSoup,你只能在Python中使用BeautifulSoup。@CRUSADER我绝对不会走那么远。对于直接的数据抓取,方法必须有所不同,但有许多机器学习项目正是这样做的,即动态处理新闻。对于单个开发人员来说,这肯定很难,但我不会称之为“胡说八道”。我同意这不是一个“胡说八道”,虽然总体来说非常困难,但即使是不完美的启发式也可能有用。感谢您的响应和帮助,尽管这不是一个通用解决方案。没有通用解决方案,这是重点。创建这样一个通用的解决方案需要一个涉及机器学习和人工智能的庞大项目。通过分析页面元素并尝试在具有类似类型和/或属性的页面元素中找到大文本块,您可以想出比直接爬虫更好的方法,但是如果你想要的东西不会有相当高的漏检率和假阳性率,是的,你需要一些非常严重的人工智能。@sr22,我将实现你上面所说的,并查看漏检率,也许通过微调,这样的东西可以变得可靠@十字军战士,你为什么这么生气?你说话的口气好像把这样的事情编出来是不可能的。@CRUSADER我认为让OP听到你所说的他的方法是完全错误的,以及他可以采取什么不同的方法是有益的。