如何从网页中提取有意义且有用的内容?

时间:2012-12-09 20:11:31

标签: php python html-parsing web-scraping data-extraction

我想解析网页并从中提取有意义的内容。有意义的,我指的是用户想要在该特定页面中看到的内容(仅文本)(数据不包括广告,横幅,评论等)我想确保当用户保存页面时,他想要的数据读保存,没有别的。

简而言之,我需要构建一个与Readability类似的应用程序。 (http://www.readability.com)我需要获取网页的这些有用内容并将其存储在单独的文件中。我真的不知道如何去做。

我不想使用需要我连接到互联网并从服务器获取数据的API,因为数据提取过程需要离线完成。

我能想到两种方法:

  1. 使用基于机器学习的算法(例如:http://ai-depot.com/articles/the-easy-way-to-extract-useful-text-from-arbitrary-html/

  2. 开发一个可以令人满意地清除网页中所有混乱的网络抓取工具。

  3. 是否有现成的工具可以执行此操作?我遇到了samppipe库(http://code.google.com/p/boilerpipe/),但没有使用它。有人用过吗?它会给出满意的结果吗? 有没有其他工具,特别是用PHP或Python编写的这种网络抓取工具?

    如果我需要建立自己的工具来做这件事,你们会建议你去做什么?

    由于在开始解析之前我需要清理凌乱或不完整的HTML,我会使用像Tidy(http://www.w3.org/People/Raggett/tidy/)或Beautiful Soup(http://www.crummy.com/software/BeautifulSoup/bs4/doc/)之类的工具来完成这项工作。

    但是我不知道在这一步之后如何提取内容。

    PS。我是一个业余爱好者,如果准备好使用开源工具来做这件事,我会很高兴,并且可以很容易地集成到我用PHP或Python编写的代码中。 或者,如果我必须编写自己的代码,我很乐意获得之前完成此类工作的指导! :) 非常感谢!

2 个答案:

答案 0 :(得分:9)

你输入'python readability'到google了吗?在github上有一个非常受欢迎的(200多个粉丝)库。

https://github.com/buriy/python-readability

另外,如果你输入'php readability'有一个php,虽然它有100个粉丝,它已经有近两年的活动了 https://github.com/feelinglucky/php-readability

最后,最流行的(350多个github folowers)是ruby可读性端口 https://github.com/iterationlabs/ruby-readability

至少你可以看到这3个不同的项目如何完成解析网页的“重要部分”。

答案 1 :(得分:2)

您可以使用htql。

import htql
page="..."
query="&html_main_text"

result=htql.query(page, query)