【问题标题】:how to parse the documents using Crawlers如何使用爬虫解析文档
【发布时间】:2013-05-04 17:15:49
【问题描述】:

我是这个主题的新手,但我的要求是使用爬虫解析不同类型的文档(Html、pdf、txt)。请建议我使用哪种爬虫来满足我的要求,并为我提供一些教程或一些如何使用爬虫解析文档的示例。

谢谢。

【问题讨论】:

标签: linux parsing web-crawler


【解决方案1】:

这是一个很宽泛的问题,所以我的回答也很宽泛,只触及表面。
这一切都归结为两个步骤,(1) 从源中提取数据,以及 (2) 匹配和解析相关数据。

1a。从网络中提取数据

有很多方法可以从网络上抓取数据。根据源是 static 还是 dynamic,可以使用不同的策略。

如果数据在静态页面上,您可以下载所有页面的 HTML 源代码(自动,而不是手动),然后从 HTML 源代码中提取数据。可以使用多种不同的工具(使用多种不同的语言)下载 HTML 源代码,即使是简单的 wgetcurl 也可以。

如果数据位于动态页面上(例如,如果数据位于某些表单后面,您需要执行数据库查询才能查看它),那么一个好的策略是使用自动网页抓取或测试工具。其中有很多。 请参阅此Automated Data Collection resources [1] 列表。如果您使用这样的工具,您可以立即提取数据,您通常没有将 HTML 源显式保存到磁盘然后解析它的中间步骤。

1b。从 PDF 中提取数据

首先尝试Tabula。它是一个开源 Web 应用程序,可让您直观地从 PDF 中提取表格数据。

如果您的 PDF 中的数据没有整齐地排列在简单的表格中,或者您有太多数据无法使用 Tabula,那么我建议使用 *NIX 命令行工具 pdftotext 来转换可移植文档格式 ( PDF) 文件转换为纯文本。

使用命令man pdftotext 查看该工具的手册页。一个有用的选项是-layout 选项,它试图在文本输出中保留原始布局。默认选项是“撤消”文档的物理布局,而是按阅读顺序输出文本。

1c。从电子表格中提取数据

尝试xls2text 转换为文本。

2。解析(HTML/文本)数据

对于解析数据,也有很多选项。例如,您可以使用grepsed 的组合,或者BeautifulSoup Python 库`,如果您正在处理 HTML 源代码,但不要将自己限制在这些选项中,您可以使用一种语言或您熟悉的工具。

当您解析和提取数据时,您实际上是在进行模式匹配。 寻找可以轻松隔离您所追求的数据的独特模式。

一种方法当然是正则表达式。假设我想从名为 file 的文本文件中提取电子邮件地址。

egrep -io "\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b" file

上述命令将打印电子邮件地址 [2]。如果您想将它们保存到文件中,请将> filename 附加到命令的末尾。


[1] 请注意,此列表并非详尽的列表。它缺少许多选项。
[2] 这个正则表达式不是万无一失的,有一些极端情况它不会涵盖。 或者,您可以使用我创建的脚本,该脚本更适合从文本文件中提取电子邮件地址。它在查找电子邮件地址方面更准确,更易于使用,并且您可以一次传递多个文件。你可以在这里访问它:https://gist.github.com/dideler/5219706

【讨论】:

  • 感谢您的回答,它给了我一些想法来满足我的要求。
  • @user2353439 不客气。一旦您决定使用特定的工具集,您就可以阅读许多在线教程。如果您对我的回答感到满意,请将其标记为已接受的答案,以便查看此帖子的其他人知道它已得到回答。
  • 答案已接受,但你能建议我使用哪个工具更好,我可以使用 apache nutch 来满足我的要求吗
  • @user2353439 哪个工具更好用取决于你已经知道和熟悉的、你的数据来源、你工作的环境等。换句话说,也有许多变量让我为你推荐一个特定的工具。如果您缩小问题范围,使其更具体,我可以提供更多帮助。 - 我看了一下 Apache Nutch,我认为它对你没有用(除非我误解了你想要做的事情)。 Nutch 是一个开源的网络搜索引擎,如果你只想抓取一些数据,那就太过分了。
  • @user2353439 您要从 FLV 文件中提取哪些数据?您是否尝试在 Internet 上下载 FLV 文件?您是否要截取视频的屏幕截图?您是否尝试从文件中提取元数据?
猜你喜欢
  • 1970-01-01
  • 2012-05-21
  • 1970-01-01
  • 2020-02-19
  • 1970-01-01
  • 2012-09-12
  • 2015-03-28
  • 2016-10-30
  • 1970-01-01
相关资源
最近更新 更多