我在之前的博文 “谈谈爬虫的昨天、今天和明天” 提到,爬虫技术是曾经互联网的基石,也是当今互联网技术的重要组成。未来 PC 服务和移动服务将产生功能上的分离,移动端更加关注普罗大众日常生活相关的功能(购物、社交、娱乐等),而 PC 将回归其本质,即工具属性。
最近看帖子发现了两个基于爬虫的开源项目,虽然还残留着 PC 时代项目痕迹,但个人觉得这两个项目还是有一定的意义的,因为这两个项目从某种程度上来说,更加关注 PC 的工具性。同时国内关于这两个项目的介绍寥寥。今天在这里和大家分享一下~
1. Kiwix
Kiwix 的官方宣传是:在你的手机和电脑上轻松储存 Wikipeida 和任何网站(Store Wikipedia or any website on your mobile phone or computer, easily)。
这个网站最初是用来做 Wikipeida 离线访问的,后来逐步扩展到一些其他主流网站的离线访问,例如 Project Gutenberg、 Stack Exchange、 YouTube、 Ted Talks
该项目的核心技术思路很直接、简单:
其中,zimfile 相关的代码是通过 C++ 进行开发的,而爬虫部分则是通过 python 实现的。
虽然看起来很简单,但实际上有很多技术难点,例如我们在 Wikipeida 里搜索一个东西可以得到很快的响应,这得益于 ES 等工具软件,但我们不可能在用户的电脑上安装一个 ES 吧,这样做速度和数据体积都会变得很大。如果仔细查看 Kiwix 的 github 相关仓库,会发现其相关工程非常多,是一个不折不扣的大型软件项目!
作为一名程序员,我看到该项目的第一反应是这对于很多只能离线编程的程序员兄弟简直是福音。(一些项目因为安全需求只能进行封闭开发,无法连接互联网!)
然而实际上该项目目标更加宏大:方便地向这个世界上无法使用网络的地方传播知识和文化!
无法使用网络?这可真不是开玩笑。我们看下面这张图,是 2017 年世界各地可以使用网络的人口比例:
对于非洲地区,很多地方由于基础设施缺失无法使用网络;其他一些地区由于政治原因,网络被管控;还有一些地区网络费用高昂,阻碍了大众获取知识。
而 Kiwix 项目甚至通过一个 U 盘就可以将思想进行传播,我觉得应该点个赞。
2. ArchiveBox
ArchiveBox 本身是一个制作网页 (站) 即时镜像的工具,这点和 Kiwix 有异曲同工之妙。但是 ArchiveBox 更加通用与小巧一些,可以把你想静态化的任何网站进行静态化,包括文本、图片、PDF 甚至视频。
技术上来讲,ArchiveBox 虽然技术品类比 Kiwix 多很多,用到了 wget、Chrome headless、youtube-dl、pywb、readability 等,但这些毕竟都是爬虫常用的技术,感觉并不复杂。
实际操作了官方的 docker 镜像后,发现其爬虫功能做得比较完备,以后有时间可以深入研究一下(不清楚为什么一个简单的网页他会处理很久…)。
软件截图如下:
其中:
- Example Domain
- 示例网页,展示效果较好 ✔
- b 站:刘备斗舞谢广坤
- 网页图片和视频都无法正确处理 ✘
- 标题识别有误(因为软件识别的是 meta 里的标题信息),也未提供修改功能 ✘
- csdn:如何创作在页面嵌入一个 “无法被下载” 的 PDF 文档
- 页面内容可以较好保留 ✔
- 标题和 b 站同样的问题 ✘
- 打开几秒后发生了跳转到 csdn 主页的行为,说明 JS 未能处理好 ✘
相较于普通的浏览器书签,保存网站在浏览时的即时状态,可以很好地应对帖子被删除,甚至网站关闭这些特殊情况。但该软件总体来看 bug 较多,属于一个半成品状态。
3. 总结
本文介绍的两个项目,均是基于爬虫技术的比较有意义的项目。今后如果再遇到一些让人眼前一亮的项目,会继续和大家分享~