给定一些随机的新闻文章,我想写一个网络爬虫来找到最大的文本体,然后提取它。目的是提取页面上的物理新闻文章。
最初的计划是使用 a并按每个标签的值对其进行排序BeautifulSoup findAll(True)
.getText()
。编辑:不要将它用于 html 工作,使用 lxml 库,它基于 python 并且比 BeautifulSoup 快得多。命令(这意味着提取所有 html 标签)
但这不适用于大多数页面,比如我作为示例列出的页面,因为大量文本被分成许多较小的标签,例如段落分隔符。
有人对这个有经验么?像这样的任何帮助都会很棒。
目前我正在使用 BeautifulSoup 和 python,但愿意探索其他可能性。
编辑:几个月后回到这个问题(哇,我听起来像个白痴^),并结合库和自己的代码解决了这个问题。
以下是一些对这项任务非常有用的 Python 库,按对我的帮助程度排序:
#1 goose 库快速、强大、一致 #2可读性库内容尚可,平均比 goose 慢,但比锅炉管快 #3 python-boilerpipe安装缓慢且难以安装,boilerpipe 库没有故障(最初在 java 中),但是事实上,这个库是建立在 java 中的另一个库之上的,它归因于 IO 时间和错误等。
如果有兴趣,我可能会发布基准。
间接相关的库,您可能应该安装它们并阅读它们的文档:
- NLTK 文本处理库这个太好了不安装。他们提供文本分析工具以及 html 工具(如清理等)。
- lxml html/xml 解析器上面提到过。除了可用性之外,这在各个方面都击败了 BeautifulSoup。这有点难学,但结果是值得的。HTML解析花费的时间要少得多,非常明显。
- python webscraper 库 我认为这段代码的价值不是lib本身,而是使用lib作为参考手册来构建你自己的爬虫/提取器。它的编码/记录非常好!
使用 python 这种相当慢的语言的许多价值和力量都来自它的开源库。它们组合在一起使用时特别棒,每个人都应该利用它们来解决他们可能遇到的任何问题!
Goose 库得到了很多可靠的维护,他们刚刚添加了阿拉伯语支持,太棒了!