-1

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

谢谢你。

4

1 回答 1

2

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

1a。从网络中提取数据

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

如果数据在静态页面上,您可以下载所有页面的 HTML 源(自动,而不是手动),然后从 HTML 源中提取数据。可以使用许多不同的工具(使用许多不同的语言)来下载 HTML 源代码,甚至可以使用简单的wgetcurl将执行此操作。

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

1b。从 PDF 中提取数据

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

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

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

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

尝试使用 xls2text转换为文本。

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

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

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

一种方法当然是正则表达式。假设我想从名为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

于 2013-05-10T05:00:58.557 回答