zl程序教程

您现在的位置是:首页 >  前端

当前栏目

《Clojure数据分析秘笈》——1.8节从网页表中抓取数据

网页数据数据分析 抓取 表中 1.8 秘笈 Clojure
2023-09-11 14:18:20 时间

本节书摘来自华章社区《Clojure数据分析秘笈》一书中的第1章,第1.8节从网页表中抓取数据,作者(美)Eric Rochester,更多章节内容可以访问云栖社区“华章社区”公众号查看

1.8 从网页表中抓取数据
互联网上数据无处不在。遗憾的是,许多互联网上的数据不易获得。这些数据深埋于表、文章或者深层嵌套的标签中。网络抓取是一件让人讨厌的体力活,但是它通常又是唯一能将这些数据取出用于分析的手段。本方法描述如何加载网页并挖掘其内容以便取出数据。
使用Enlive库(https://github.com/cgrand/enlive/wiki)可以完成这项工作。这个库使用基于CSS选择器的领域专用语言(Domain-Sepecific Language,DSL)在网页中定位元素。这个库也可用于模板。在本例中,仅使用它从网页中取出数据。

1.8.1 准备工作
首先,需要将Enlive添加到项目的依赖中:


f07adfa58b2fe71d26e48eb4bdd8b055642985a8

有意地去掉文件的其他内容,并使用表的布局。
1.8.2 具体实现

由于任务稍有些复杂,这里将每步的工作写成函数。

77726e27745f6b87904fc0bb8f8c47851b0977a7

现在,选择所有表头单元,抽取其中的文本,将每个转换为关键词,然后将整个序列装入向量。得到了数据集的头部:


855a5efd2accad672eb7da0dac8b90b6867835c4

需要注意的是,在此展示的代码是多次试错后的结果。屏幕抓取的过程是这样的。通常我将下载并保存页面,从而不需要持续向Web服务器发送请求。然后启动REPL并在其中解析网页。可以通过浏览器的“查看源代码”功能查看网页和HTML,并且可以在REPL解释器中交互式地检查网页中的数据。由于比较方便,在工作过程中,我可以不断地在REPL解释器和文本编辑器中复制、粘贴代码。这种工作流程和环境使得屏幕抓取这样一个即使一切正常都需要精细操作的困难任务变得很轻松。


《Clojure数据分析秘笈》——导读 本节书摘来自华章社区《Clojure数据分析秘笈》一书中的目录,作者(美)Eric Rochester,更多章节内容可以访问云栖社区“华章社区”公众号查看