如何将网页解析为文本或Excel文件?

如何将网页解析为文本或Excel文件?

我正在尝试找出一种方法来从同一网站的多个页面中抓取 4 - 5 行文本,这些信息始终位于网页中的同一位置。我该如何将这些信息放入文本或最好是 Excel 文件中?

例如,参见图片

答案1

传统上,您会下载页面 HTML,然后查找紧接在数据之前的某个常量。遗憾的是,由于每个网站都不同,所以您的问题没有通用的答案。我用 python、Bash 甚至 C# 编写了脚本,可以拉下页面,在其中搜索我想要的标签,然后提取它。

查看页面源代码,找到您的数据(firebug 对此非常有帮助),并确定您要提取的内容的开始和结束分隔符。

以下是一些人们编写的用于抓取 XKCD.com 数据的脚本 http://forums.xkcd.com/viewtopic.php?f=11&t=63037

答案2

您可以尝试使用 Javascript(以 Greasemonkey 脚本 / Userscript / 扩展 / 书签 / ... 的形式)抓取页面。书签意味着您必须手动跳转到该页面并执行它。其他方法允许将数据直接传递到您的数据库(使用特权扩展或 Web 服务器时为本地存储)。

编写 JavaScript 代码需要该领域的知识,你可以寻找类似以下的 DOM 函数document.getElementByIdgetElementsByClassNamequerySelector或者XPath。由于 Etsy 已经使用 jQuery,因此您也可以使用jQuery获取数据。

作为抓取的替代方案,请考虑使用 API(如果可用)。快速搜索后,您会看到以下页面,它们可能(或可能)对您有帮助:

答案3

这很大程度上取决于你的专业领域,但过去对于这种操作我通常使用PHP 简单 HTML DOM 解析器。它使用起来非常简单,而且文档内容非常丰富。

如果您以前使用过,那么查询 DOM 的语法与 jQuery 非常相似。

您可以使用更详细的find('div[id=foo]');和,find('div[class=bar]');但也可以使用更紧凑的类似 jQuery 的方法来定义选择器find('#foo');find('.bar');

我个人使用 Chrome Inspector 来识别我想要查询的元素以找到它们的 id、class、tag 等。

请注意,根据您打算加载到内存中的文件的大小,您可能会遇到内存错误,但如果该页面与上面屏幕截图中的页面类似,则应该不会有问题。

相关内容