利用爬虫技术能做到哪些很酷很有趣很有用的事情?


作者:grapeot

可以带逛呀!

爬了知乎12万用户的头像,把长得像的头像放在一起,方便浏览:lab.grapeot.me/zhihu/to

然后搜集了知友们的点击,预测出来这是你们(平均)最喜欢的人长的样子:

然后根据点击数据训练出来了一个带逛机器人,可以自动识别美女:

lab.grapeot.me/zhihu/au

更详细的信息可以参见我的专栏文章:
带逛传万世 因有我参与 - 挖掘知乎里有趣的东西 - 知乎专栏
你们最爱的知乎头像 - 挖掘知乎里有趣的东西 - 知乎专栏
头像带逛 - 挖掘知乎里有趣的东西 - 知乎专栏



作者:林骏翔

我当初是看到这个帖子才知道Python这门语言的功能,才开始去学的,现在也学了一小段时间。不得不说,Python爬虫对于我来说真是个神器。之前在分析一些经济数据的时候,需要从网上抓取一些数据下来,想了很多方法,一开始是通过Excel,但是Excel只能爬下表格,局限性太大了。之后问了学编程的朋友,他说JavaScript也能实现,于是懵懵懂懂地就去学Java(我那朋友是学Java的,我当时问他用Java能不能实现,他说JavaScript好像可以,当时我什么都不懂,就把JavaScript理解成是Java下的一个分支,以为JavaScript只是Java其中一个包什么的,于是我便去学了一小会Java,无知惹的祸啊。。。)。但整个Java体系也太庞大了,学起来力不从心,毕竟我只是要运用其中一部分功能而已,于是学没多久我就放弃了。就在我迷茫的时候,我发现了Python大法……

废话说多了,说说自己的学习经历吧。也给想学Python,想写爬虫的人一个参考。
       一开始我是在网易云课堂上自己找了个基础的视频来学,Python是真是门简单的语言,之前懂一点Visual Basic,感觉Python也很适合给无编程基础的人学习。
       入门视频到最后,就做出了我的第一个爬虫——百度贴吧图片爬虫(相信很多的教程都是以百度贴吧爬虫为经典例子来说的。)

一开始代码很简单,只能爬取第一页的数据,于是我加了一个循环,就能够爬取制定页数的图片了。并且图片是有按顺序排列的,非常方便。在筛选网址的时候用正则表达式就好了。正则表达式使用:[精华] 正则表达式30分钟入门教程

可是我不经常混贴吧啊,也很少有要下载贴吧图片的需求。回归初衷吧。我对投资有兴趣,学编程有一个原因也是为了投资服务。在7月股灾进行时的时候,我错过了一个明显的“捡钱”的机会,并非自身专业知识不够,而是当时在准备考试,很少去看股市,这让我心有不甘:要是有个东西能够帮我自动爬取数据分析并推送就好了,于是有了以下学习轨迹:

一、爬取数据
       在此顺便贴上一个Python系列教程jikexueyuan.com/path/py,极客学院,里面有些教程还是挺不错的。从里面我知道了两个可以替代Python里urllib和re正则表达式的库,它们分别叫做requests和lxml。

第一个库挺不错的,现在在获取网页源代码时,我都用这个库,大家如果有不懂的可以看看那个网站。第二个库由于我是用3.4版本的Python,折腾了很久没折腾进去,于是我发现了另一个不错的库BeautifulSoup,详细教程参考:Python爬虫入门八之Beautiful Soup的用法

有了requests和Beautifulsoup,基本上可以实现我想要的很多功能了。我便做了一个抓取分级基金数据的爬虫:

二、分析并推送
        其实在此分析其实还谈不上,顶多算是筛选。(不过我相信随着我数学能力提升会能有进一步的分析的,美好的祝愿。。。)筛选很简单,就是涨幅或收益率等等满足一定条件就保留下来,保留下来干嘛?推送啊!!!

将保存下来的数据通过邮件发送到自己的邮箱,手机上下载个软件,一切就大功告成了!

至此当时学习Python的目的就达到了,当时鸡冻地要炸了!!!

不过……那么好玩的东西,怎么能这么快就结束了?再折腾吧!于是


三、简单的界面
      等等!Python好像不能直接弄成exe可执行文件,不能每次运行都开Python的窗口啊!强迫症怎么能忍!上网搜搜发现有诸如py2exe的包可以转换,可是老子是3.4版本啊!折腾半天没搞定,算了!我不是会点VB吗,用那个吧。于是连界面都有了


刚好会点PS,做做低级的界面也不错。

四、云服务器
做完界面我以为就结束了,我还是too young啊。用了几天发现,我总不能天天开着电脑让它就运行那么几个程序吧?总得有个地方能让我24小时运行这些程序。本来想跟朋友的电脑轮流运行,还是太麻烦。偶然的机会我发现了云服务器这个东西。了解后砸下重金买下服务器(其实一个月30而已……)

折腾一番linux系统的操作,实现了24小时的实时推送。


而到这里,我已经深陷到Python里了,我觉得我应该继续学习这门强大简单的语言,在知乎上看到了一个问题:Quant 应该学习哪些 Python 知识? - 薛昆Kelvin 的回答,虽然说的是Quant但也为我指引了一些方向。目前正准备学习numpy,pandas,matplotlib这些库,以实现未来对金融、经济数据的可视化和分析。相关的内容有一本书写得还不错,叫《利用Python进行数据分析》,有兴趣学习可以读一读。

共勉。


作者:刘飞


该轮到我祭出我当年研究生期间在实验室里参与或旁观的各种有用或者有趣的课题了:


1. 建立机器翻译的语料库。

这是我研究生期间的核心课题,我先来介绍下背景。

大家其实都用过谷歌翻译、百度翻译,虽然确实槽点很多,但不妨碍机器翻译相较过去已经达到基本可用的程度了。

我大概说下机器翻译的原理。

在几十年前,计算机学家们的思路是,既然是人工智能的范畴,就让计算机懂得语法规则、知道词语含义,跟小孩子上学时学习的语言课程一样去做训练,就应该可以了。

但结果是,基于语义和语法规则的机器翻译效果糟糕得一塌糊涂。

究其原因,还是每个词语的含义实在太多、每句话的语境不同意思也会不同,更别说不同语言中要表达清楚同一个意思的方式也完全不同。

比如下图这个,你觉得英语国家的人能看懂吗:

其实,当时也有另一派,叫做统计派。他们认为,就跟当年战胜国际象棋世界冠军的“深蓝(深蓝(美国国际象棋电脑))”一样,应当用统计的方式去做。大家知道,“深蓝”并没有领会象棋的下法,而只是熟悉几百万的棋局,懂得怎样走从概率上看起来是最正确的。

机器翻译也是这样,完全可以输入人工翻译的大量语料,然后做出统计模型,让计算机尽可能地熟悉别人是怎么翻译的,从而耳濡目染,也能“假装”可以翻译了。

但那个年代并没有条件收集大量语料信息。后来很多年后,谷歌出现了,随之出现的还有它的超大数据规模和超强的计算能力,于是谷歌的统计机器翻译系统也就是全球正确率最高的系统之一了。而目前你所用过的、见到的机器翻译工具,全都是用的统计方法。

故事大概就是这样。目前学术界的机器翻译方法中,统计机器翻译基本是垄断的地位。而效果的好坏,则基本就看语料库的规模。(想了解更多,推荐阅读 数学之美 (豆瓣) 的第2章“‘自然语言处理 — 从规则到统计”及第3章“统计语言模型”)

所以你知道了,我的任务就是跟同学做一个爬虫和简易的分析系统,从而建立一个大规模的语料库。

网上双语的资源还是挺多的,大都像这种:


我们的爬取步骤大概是:
1. 对当前网页进行简易判断,如果有双语嫌疑,则收录整理出来双语的正文;如果没有,弃用;
2. 将正文内容进行详细判断,确定是双语文本,则进行段落对齐和句子对齐,整理到语料库;如果没有,弃用;
3. 对当前网页的所有链接网页,重复步骤 1

有详细介绍的我们申请的专利在这里:soopat.com/Patent/20121

其实我们当时的双语判断算法和对齐算法这些都不是难点,难点在机器配置、爬虫设计和服务器维护上。我们几乎天天流窜在机房(配置机器、接线、装机)、实验室(编写、运行代码)、网络中心(跪求带宽)、学校物业(空调他妈又坏了)这几个地方,总是没法消停。

最痛苦的是,假期里回家远程访问下爬虫,发现 down 机了... 整个假期的宝贵时间就浪费了。

这是我们当时在又闷又热又吵的机房的照片:


好在最后我们终于爬到了要求的语料规模,并且通过了国家项目的验收。现在这些包括中英俄日的庞大语料正在百度翻译中起到重要的作用,如果你用过百度翻译,不妨给我点个感谢 ^_^

如果你对机器翻译感兴趣,也可以自己爬点双语语料,做个翻译器玩玩。这是一个极其简易的搭建教程:机器翻译系统的搭建。可以用它介绍的 1500 句对,也可以自己多爬一些。搭建好之后,你输入一句话,看到机器像模像样地回一句半生不熟的翻译,还是有可能会被萌到的。

当然,要是你希望像我们一样搭建千万级甚至亿级的语料库,并且做一个翻译器,那你需要有特别强大计算能力和存储能力的服务器、非常宽的带宽,以及强大的耐心和毅力...


2. 社会计算方面的统计和预测

很多朋友已经提到了可以通过爬虫得到的数据做一些社会计算的分析。我们实验室爬取了大规模的新浪微博内容数据(可能是非商用机构中最多的),并针对这些数据做了很多有趣的尝试。

2.1 情绪地图

@Emily L

提到了著名的根据情绪预测股市的论文:battleofthequants.net/w 。其实我们也仿照做了国内的,不过没有预测,只是监测目前微博上大家的情绪,也是极有趣的。


我们把情绪类型分为“喜悦”“愤怒”“悲伤”“恐惧”“惊奇”,并且对能体现情绪的词语进行权重的标记,从而给每天每个省份都计算出一个情绪指数。

界面大概是这样:

可以直观看到全国各省份的情绪。不过实际上我感觉省份的区别不明显,最明显的是每天全国情绪指数的变动。

比如春节是 2 月 18 日,那天的情绪指数是 41.27,前一天是 33.04,后一天则是 39.66。跟除夕夜都在吐槽和抱怨春晚,而大年初一则都在拜年情绪高涨,初二有所回落这样的状况预估是一致的。

比如今年 1 月 2 日,上海踩踏事故开始登上各大媒体头条,成了热点话题,整个微博的情绪指数就骤降到 33.99 。

再比如 5 月份情绪指数最高的是 5·20,因为今年开始流行示爱和表白;其次就是五一假期那几天。同样跟现实状况的预估是一致的。

访问地址:123.126.42.100:5929/fle


2.2 饮食地图

我们抽取出所有美食相关词语,然后基于大家提到的美食次数,做了这么一份饮食地图。你可以查看不同省份、不同性别的用户、不同的时间段对不同类别食物的关注程度。

比如你可以看到广东整体的美食关注:


还可以把男的排除掉,只看女的:

还可以具体到,看广东女性每天早上会提到什么喝的


访问地址:微博用户饮食习惯分析


2.3 票房预测

这是我们实验室最大胆的尝试,希望利用微博上大家表现出来的,对某部电影的期待值和关注度,来预测其票房。

细节就不介绍了,目前对某些电影的预测比较准,某些则差很多。因为显然,很多电影是大家不用说也会默默买票,而很多电影是大家乐于讨论但不愿出钱到电影院去看的。

界面是这样的:


访问地址:电影票房预测-SCIR

最后贴上我们实验室的官方网站:哈尔滨工业大学社会计算与信息检索研究中心


3. 写在后面

现在国内的社交平台(微博、豆瓣、知乎)已经积累了很多信息,在上面可分析的事情太多啦。大到政府部门需要的舆情监控,小到可以看看喜欢的姑娘最近情绪如何。

其中有些会特别有价值,比如一些重要的预测(股市预测、票房预测),真的做成了的话商业价值根本不可估量;还有些会特别有趣,比如看看 5·20 的时候大家最爱说的情话是什么,看看我跟李开复之间最近的关系链是什么。

说到这,我突然很想做个知乎的分析。

在内容方面,比如看看全知乎的文字里最常出现的人名到底是

@张佳玮

还是

@梁边妖

;比如看看政治或者历史话题下,以表达情绪的词作为依据,大家的正能量多还是负能量多;比如看看当大家提到哪些东西时,情绪会最激动(中医?老罗?穆斯林?)。


在关系方面,比如看看我的朋友、传说中认识所有知乎女 V 的谁谁谁到底还有哪个女 V 没有关注;比如看看知乎有哪些社交达人,虽然没多少赞但关系链却在大 V 们中间;比如看看有没有关注了我同时还被

@朱炫

关注的,这样我可以托他给我介绍大师兄。


有没有人一起来嗨?让我看到你的手!



代码技巧

转载请关注公众号:代码技巧 回复:授权

本文链接地址:https://www.oudahe.com/p/14022/