xDroid's Blog

假装高冷的Geek

人人网备份方案

人人网 居然还没有倒闭,真是神奇……作为近十年前崛起的社交新秀,人人网(前身校内网)火了也将近有三四年了;不过上大学之后我就几乎没有用过它了……

最近登陆上去发现整个站已经非常破败了,还是趁早数据 dump 下来比较好。

本来想直接每个网页 ctrl-s 保存的,转念一想这样也太累了(而且一些评论什么不一定能加载出来)。遂考虑用爬虫来进行抓取,语言使用了比较熟悉的 bash ,所使用的脚本放在 owen8877/clone-your-renren.com 了。

中间步骤就不细说了,是比较常规的操作(使用 Firefox/… 的 Developer Tools)。提几点技术细节吧:

  1. bash 如何解析 json 数据呢?这里用到 jq 库,语法上还是比较方便的,直接 pipe 进去就好,至于快不快我就不管了(

  2. 人人网的数据适配比较奇葩,既不是后端直接渲染,也不是前端动态抓取数据渲染,而是后端把数据塞在 <script> 里然后由浏览器加载并渲染……这种思路还真是第一次见到,毕竟给抓取数据带来了极大的便利www。

  3. 有一些差点掉到坑里的细节,比如说在抓取相册的时候,每张图片都有不同尺寸的压缩预览,最大的是 xLargeUrl (大概是 1024*768 ,真的抠门……考虑到五六年前可能还算是良心的吧x)。有些图片有这个属性,但是链接是空的,实际的链接在 large (你没看错,命名还不一样)!于是就下载下了空文件,不检查的话就漏过去了囧。

  4. 名字可以改成 undefined ,似乎不会挂(各种意义上)。

  5. 没了的东西:日志,语音相册,公共主页的视频(speaking of 公共主页,似乎不好找规律,我就直接存网页了= =)