3.4 用数据抓取“借鸡下蛋”

人工采集和录入标准化的数据是一项耗时费力的工作。聪明的增长黑客自然能想到办法来一劳永逸,那就是数据抓取。实际上,很多产品在开创之初,都是先从照搬别人开始的。这样做的优势在于保证自己的产品与先发竞品在数据层面保持在同一水平线。但决定开始抓取前需要深思熟虑,防止侵犯他人权益。

2010年9月底,微软正式宣布终结空间主页服务(Windows Live Spaces)。在国外,3000万用户将被强制迁移到主流的独立博客服务平台WordPress.com。而在国内,微软选择与新浪合作,计划在“十一”国庆假期后向用户提供官方迁移工具,将用户日志、图片、评论、朋友关系等无缝转至新浪博客。

消息公布后,网易博客反应迅速,立即抢在新浪行动之前宣布特别开启“一键搬家”的绿色通道,欢迎Live Spaces的用户选择网易博客安家。整个搬家操作只需两步:先输入原Live Space空间地址,再输入网易博客账号及密码,就能进入搬家程序,系统自动导入日志。

00068.jpeg

网易博客的搬家工具

其实这个功能早先一直存在,技术实现也并不复杂。基于通用的RSS(Really Simple Syndication)标准,各家网站对外输出的博客内容能够轻易被别家抓取和解析。只是网易赶在这个时间节点对其进行了强化宣传,给寻求出路的微软空间主页用户带来了福音。

QQ邮箱推出的第三方邮件代收功能,让用户只需一个统一入口就能收发国内外其他邮箱的邮件。它采用的也是国际通用的SMTP、IMAP和POP3邮件收发协议。

00069.jpeg

QQ邮箱可添加其他邮箱账户代收

话说回来,如果没有现成的通用协议和API,想做抓取可就得费一番脑筋了。

笔者曾经参与过一款移动交友产品“追TA”,其基本玩法类似国外的Tinder:向用户展示一张又一张附近异性的高清大图,如果用户对某异性产生好感,可以点“喜欢”按钮寻求配对。

为了推广产品,我们不但号召团队内部成员群起注册,更拉上了亲朋好友,这才好不容易在短短一两天内凑足了几十名种子用户。可实际使用过一圈后发现,这么多用户远远不够玩。为了让早期邀请进来的朋友有事可做,我们决定通过技术手段先从外部抓取一批照片,虚拟成真实用户的样子放到应用里。那么去哪里抓取照片呢?时尚网站都是帅哥美女,放进来显得太假,我们需要普通网民的头像,最好是素人素颜。测试过新浪微博、人人网和某婚恋网站后,我们发现这些网站可抓取的头像照片通常都小于200x200,放在追TA里看起来太小,所以得要大图。

经过一番寻找,我们将目光锁定在了当时发展得如火如荼的某手机K歌应用上。在这款应用中,用户唱歌后可以将自己的作品发布到微博上,其他人点击链接就能到歌曲页面收听。而正是这个歌曲的发布页面,包含有一张640x640的用户头像大图,绝大多数都是真实头像。这正是我们想要的。

00070.jpeg

包含用户头像大图的待抓取页面

通过浏览器查看头像图片URL,形如http://aliimg.xxxapp.com/cache/photo/194402263_640_640.jpg。这一串链接结构非常清晰,很明显的是其中的194402263代表的是这个用户的唯一标识符。我们尝试更改194402263这一串数字,以探寻它的上边界和下边界,最终找到了在某一数字范围内,每次步距加1,就会得到一张不同的用户头像。这些图片完全可通过浏览器或其他方式直接下载,没有做任何防盗链处理——简直就是为抓取而生。

万事齐备,马上开工。无须任何第三方工具,打开Mac的终端,输入如下指令:

curl-O http://aliimg.changba.com/cache/photo/[260929610-26093 9610]_640_640.jpg

只见终端欢快地跑了起来,开始为我们下载用户标识符在260929610到260939610之间的这10000多张照片。

00071.jpeg

在Mac命令行下用curl命令抓取头像大图

抓取完成后,进入终端对应的当前路径,就能看到被抓取的照片了。

00072.jpeg

抓取获得的头像大图

当然,纯粹依靠机器自动抓取的照片,不一定全都可用,还是需要投入少量人工干预来遴选剔除。这个过程耗费了两名员工半天时间,但比起手动一张张找图凑够一万张,效率已大幅提升。

最终所有图片选定完毕,我们将这些抓取来的照片上传至服务器,虚拟成真实用户随机地分布到地图上,作为给种子用户体验试玩的测试数据,成功地延长了使用时长。当然,产品内部生态滚动起来之后,我们删除了这些假用户。

在这则案例中,使用的是最简单的命令行指令。如果你的抓取需求更复杂,还可以自行撰写脚本,或使用网上开源的第三方工具。再次提醒一下,敬请正确使用这些网络上的开放内容,尊重原作者及其相关版权方的权益。