如何从互联网采集海量数据?租房,二手房,薪酬...

本文作者沙漠之鹰,由 沙漠之鹰 授权 大数据 发布,转载请联系作者,谢绝二次转载。

不少朋友看了沙漠君的文章后,都会问:那几十万条租房,二手房,薪酬,乃至天气数据都是从哪里来的?其实我还没告诉你这些数据在十几分钟内就可以采集到!

一般我会回答,我用专门的工具,无需编程也能快速抓取。之后肯定又会被问,在哪里能下载这个工具呢?

我淡淡的说,我自己写的。。。

(这个B装的...我给95分!)

沙漠君最近比较忙乱,说好的一大堆写作任务都还没有完成。

授人以鱼不如授人以渔,我做了一个决定,将这套软件全部开源到GitHub!

免费使用,开放源代码! 从此以后,估计很多做爬虫的工程师要失业了。。。因为我的目标是让普通人也能使用!!!目标有点远大,不过貌似距离不远了(不到一光年吧)。

这篇文章介绍爬虫大概的原理,文末会有程序地址

什么是爬虫

互联网是一张大网,采集数据的小程序可以形象地称之为爬虫或者蜘蛛。

爬虫的原理很简单,我们在访问网页时,会点击翻页按钮和超链接,浏览器会帮我们请求所有的资源和图片。所以,你可以设计一个程序,能够模拟人在浏览器上的操作,让网站误认为爬虫是正常访问者,它就会把所需的数据乖乖送回来。

爬虫分为两种,一种像百度(黑)那样什么都抓的搜索引擎爬虫。另一种就是沙漠君开发的,只精确地抓取所需的内容:比如我只要二手房信息,旁边的广告和新闻一律不要。

爬虫这样的名字并不好听,所以我给这套软件起名为Hawk指代为"鹰",能够精确,快速地捕捉猎物。 基本不需编程,通过图形化拖拽的操作来快速设计爬虫,有点像Photoshop。它能在20分钟内编写大众点评的爬虫(简化版只需3分钟),然后让它运行就好啦

下面是沙漠君亲自操刀,使用Hawk抓取二手房的视频(建议在WIFI下观看):

视频内容

自动将网页导出为Excel

那么,一个页面那么大,爬虫怎么知道我想要什么呢?

人当然可以很容易地看出,上图的红框是二手房信息,但机器不知道。

网页是一种有结构的树,而重要信息所在的节点,往往枝繁叶茂。 举个不恰当的比方,一大家子人构成树状族谱,谁最厉害?当然是:

  • 孩子多,最好一生20个
  • 孩子各个都很争气(生的孙子多)
  • 最好每个孩子还都很像(清一色的一米八)

大家就会觉得这一家子太厉害了!

我们对整个树结构进行打分,自然就能找到那个最牛的节点,就是我们要的表格。找到最牛爸爸之后,儿子们虽然相似:个子高,长得帅,两条胳膊两条腿,但这些都是共性,没有信息量,我们关心的是特性。大儿子锥子脸,跟其他人都不一样,那脸蛋就是重要信息;三儿子最有钱——钱也是我们关心的。 因此,对比儿子们的不同属性,我们就能知道哪些信息是重要的了。

回到网页采集这个例子,通过一套有趣的算法,给一个网页的地址,软件就会自动地把它转成Excel!

(听不懂吧?听不懂正常, 不要在意这些细节!总之你知道这是沙漠君设计的就好了)

破解翻页限制

获取了一页的数据,这还不够,我们要获取所有页面的数据!这简单,我们让程序依次地请求第1页,第2页...数据就收集回来了

就这么简单吗?网站怎么可能让自己宝贵的数据被这么轻松地抓走呢?所以它只能翻到第50页或第100页。链家就是这样:

这也难不倒我们,每页有30个数据,100页最多能呈现3000条数据。北京有16个区县两万个小区,但每个区的小区数量就没有3000个了,我们可分别获取每个区的小区列表。每个小区最多有300多套在售二手房,这样就能获取链家的所有二手房了。

哈哈哈,是不是被沙漠君的机智所倾倒了?然后我们启动抓取器,Hawk就会给每个子线程(可以理解为机器人)分配任务:给我抓取这个小区的所有二手房! 然后你就会看到壮观的场面:一堆小机器人,同心协力地从网站上搬数据,超牛迅雷有没有?同时100个任务!!上个厕所回来就抓完了!!!

清洗:识别并转换内容

获取的数据大概长这样:

但你会看到,里面会有些奇怪的字符应该去去掉。xx平米应该都把数字提取出来。而售价,有的是2130000元,有的是373万元,这些都很难处理。

BUT,没关系!Hawk能够自动识别所有的数据:

  • 发现面积那一列的乱码,自动去掉
  • 识别价格,并把所有的价格都转换为万元单位
  • 发现美元,转换为人民币
  • 发现日期,比如2014.12或2014年12.31,都能转换为2014年12月31日

哈哈,然后你就能够轻松地把这些数据拿去作分析了,纯净无污染!

破解需要登录的网站

此处的意思当然不是去破解用户名密码,沙漠君还没强到那个程度。 有些网站的数据,都需要登录才能访问。这也难不倒我们。

当你开启了Hawk内置了嗅探功能时,Hawk就像一个录音机一样,会记录你对目标网站的访问操作。之后它就会将其重放出来,从而实现自动登录。

你会不会担心Hawk保存你的用户名密码?不保存怎么自动登录呢?但是Hawk是开源的,所有代码都经过了审查,是安全的。你的私密信息,只会躺在你自己的硬盘里。

(我们就这样自动登录了大众点评)

是不是我也可以抓数据了?

理论上是的。但道高一尺魔高一丈,不同的网站千差万别,对抗爬虫的技术也有很多种。而且小虫虫对细节非常敏感,只要错一点,后面的步骤就可能进行不下去了

怎么办呢?沙漠君把之前的操作保存并分享出来,你只要加载这些文件就能快速获取数据了。

如果你有其他网站的获取需求,可以去找你身边的程序员同学,让他们来帮忙抓数据,或让他们来试试Hawk,看看谁的效率更高。

如果你是文科生妹子,那还是建议你多看看东野奎吾和村上春树,直接上手这么复杂的软件会让你抓狂的。那该找谁帮忙抓数据呢?嘿嘿嘿...

在哪里获取软件和教程?

软件的最新版本已经公布在百度网盘里了,有兴趣可留言公众号获取链接。或者参考沙漠君的技术博客,在百度(黑)上面搜索”沙漠之鹰 博客园”即可,第二个就是,百度(黑)是不可能把最重要的放在第一个的。

有任何问题,欢迎在后台留言。

关于《沙漠之鹰》

”沙漠之鹰“个人公众号,不代表任何团体的利益,亦无任何商业目的,所有文章全部原创。任何形式的转载,演绎,必须经过公众号联系原作者获得授权,保留一切权利。

END

原文发布于微信公众号 - 大数据(hzdashuju)

原文发表时间:2016-05-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SDNLAB

SDN实战团分享(三十一):Segment Routing meet SDN

一、介绍 ? 在1990年代Yakov, Eric Rosen, Kompella很多业界先驱(仅列举了Juniper公司的MPLS业界领袖,其他公司也有 很多...

826160
来自专栏数据派THU

手把手教你上手python库pydbgen(附代码、安装地址)

20160
来自专栏跨界架构师

过去这几十年,分布式系统的「数据一致性」精华都在这了!

        本文是本系列的第三篇。与前两篇《分布式系统关注点——数据一致性(上篇)》、《分布式系统关注点——通过“共识”达成数据一致性》形成完整的「数据一致...

20210
来自专栏微信终端开发团队的专栏

关于Android N的那些事

今年3月,Google破天荒提前半年发布了Android N开发者预览版。当然,作为一个不合格的谷粉并没有第一时间体验安装,因为至今仍然能够回忆起来去年今日此门...

32160
来自专栏牛客网

成都-阿里Java研发工程师面经

11号去成都参加阿里面试,网上预约的3点,两点半就到了,刚签完到马上就喊去面试。经历了一面二面和HR面。 一面 1.介绍一下你的项目,说一下哪个项目印象最深 ...

44880
来自专栏知晓程序

微信可发送定时消息,朋友圈打通明星点赞功能? | 晓技巧

24520
来自专栏牛客网

2017年终总结:秋招心路历程+安卓/java知识总结Android 知识点总结Java知识点总结

一直想写一篇年终总结的,但是又不知道写点什么,感觉没有什么可总结的,但是今年有很多事情还是值得回顾纪念的,之后再来看这些东西应该会感触颇多。2017对我来说是值...

46580
来自专栏康怀帅的专栏

Mac OS X 背后的故事(下)

Mac OS X 背后的故事(九)半导体的丰收 半导体的丰收(上)   在美国宾夕法尼亚州的东部,有一个风景秀美的城市叫费城。在这个城市诞生了一系列改变世界的奇...

50170
来自专栏java一日一条

Android开发者必知的开发资源

随着Android平台市场份额的持续猛增 ,越来越多的开发者开始投入Android应用程序的开发大潮。如果您是一位2016年刚刚入行的Android开发新兵,恭...

21720
来自专栏程序人生

上帝说:要有一门面向未来的语言,于是有了 erlang

今个谈谈 erlang。 这些文章流于表面,更多是简单的介绍。这篇文章不同,因为 erlang 并不是一门新语言,简单介绍它的人不算少,我希望这篇文章能在深度上...

430110

扫码关注云+社区

领取腾讯云代金券