Linux 如何使用爬虫解析文档

Linux 如何使用爬虫解析文档,linux,parsing,web-crawler,Linux,Parsing,Web Crawler,我不熟悉这个主题,但我的要求是使用爬虫解析不同类型的文档(Html、pdf、txt)。请建议我使用什么样的爬虫来满足我的需求,并为我提供一些教程或一些如何使用爬虫解析文档的示例 谢谢。这是一个非常宽泛的问题,所以我的回答也非常宽泛,只触及表面。 这可以归结为两个步骤,(1)从数据源提取数据,(2)匹配和解析相关数据 1a。从web中提取数据 有很多方法可以从web上获取数据。根据源是静态的还是动态的,可以使用不同的策略 如果数据位于静态页面上,则可以下载所有页面的HTML源代码(自动,而不是手动

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


谢谢。

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

1a。从web中提取数据 有很多方法可以从web上获取数据。根据源是静态的还是动态的,可以使用不同的策略

如果数据位于静态页面上,则可以下载所有页面的HTML源代码(自动,而不是手动),然后从HTML源代码中提取数据。下载HTML源代码可以使用许多不同的工具(使用许多不同的语言)完成,即使是一个简单的
wget
curl
也可以

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

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

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

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

1c。从电子表格中提取数据 尝试转换为文本

2.解析(HTML/文本)数据 对于解析数据,还有许多选项。例如,您可以结合使用
grep
sed
,或者
BeautifulSoup
Python库`如果您处理的是HTML源代码,但不要局限于这些选项,您可以使用熟悉的语言或工具

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

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

egrep -io "\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b" file
上述命令将打印电子邮件地址[2]。如果要将它们保存到文件中,请在命令末尾附加
>filename


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

我们在谈论什么操作系统?这些文件是在不同的web服务器上还是在本地文件系统上?感谢您的回复,我使用的是linux操作系统,并且所有文件都仅在本地文件系统上。我只是想验证一下,您确实指的是爬虫程序,而不是刮取程序。爬虫通常用于索引。请参阅和。谢谢您的回答,它给了我一些想法来满足我的要求。@user2353439不客气。一旦决定要使用的特定工具集,您可以在线阅读许多教程。如果您对我的答案感到满意,请将其标记为已接受的答案,以便查看此线程的其他人知道该答案已被接受。答案已接受,但您能否建议我使用哪种工具更好,我是否可以使用apache nutch作为我的答案requirement@user2353439使用哪种工具更好取决于您已经知道和熟悉的内容,你的数据来源,你工作的环境,等等。换句话说,有太多的变量,我无法为你推荐一个特定的工具。如果你把问题缩小到更具体的范围,我可以提供更多的帮助我看过ApacheNutch,我认为它对您没有什么用处(除非我误解了您的意图)。Nutch是一个开源的网络搜索引擎,如果你只想刮取一些数据,那就太过分了。@user2353439你想从FLV文件中提取什么数据?您正在尝试在internet上下载FLV文件吗?你是想拍视频的截图吗?您正在尝试从文件中提取元数据吗?