数据科学俱乐部

中国数据科学家社区

作者:强哥,曾供职于摩根士丹利和eBay。

爬取知乎神回复很简单,这篇文章我们就来揭晓一下背后的原理。

知乎神回复都有些什么特点呢?我们先来观察一下

大家看出什么规律了么?短小精辟有没有?赞同很多有没有?所以爬取知乎神回复我们只要爬取那些赞同多又字数少的回答就可以。简单的两个步骤就能实现,第一步爬取知乎回答,第二部筛选回答。是不是很easy?

爬取知乎回答

第一步我们爬取知乎上的回答。知乎上的回答太多了,一下子爬取所有的回答会很费时,我们可以选定几个话题,爬取这几个话题里的内容。
下面的函数用于爬取某一个指定话题的内容

def get_answers_by_page(topic_id, page_no):    offset = page_no * 10    url = <topic_url> # topic_url是这个话题对应的url    headers = {        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",    }    r = requests.get(url, verify=False, headers=headers)    content = r.content.decode("utf-8")    data = json.loads(content)    is_end = data["paging"]["is_end"]    items = data["data"]    client = pymongo.MongoClient()    db = client["zhihu"]    if len(items) > 0:        db.answers.insert_many(items)        db.saved_topics.insert({"topic_id": topic_id, "page_no": page_no})    return is_end

get_answers_by_page函数有两个参数,第一个参数是话题的id,第二个参数表示爬的是第几页的内容。
爬下来的内容当中有几个需要注意的字段,下图中用黄框高亮出来了

这几个字段的含义如下:

  • question.title - 问题的标题

  • content - 回答的内容

  • voteup_count - 赞同的数量

这些字段在下一步筛选回答的时候会用到。

筛选回答

爬完数据后,我们来筛选一下结果。
我们用MongoDB中的聚合管道对回答做筛选(关于MongoDB的聚合管道的用法可以参考Aggregation Pipeline Quick Reference这篇文章,地址在https://docs.mongodb.com/manual/meta/aggregation-quick-reference/),代码如下

client = pymongo.MongoClient()db = client["zhihu"]items = db.answers.aggregate([    {"$match": {"target.type": "answer"}},    {"$match": {"target.voteup_count": {"$gte": 1000}}},    {"$addFields": {"answer_len": {"$strLenCP": "$target.content"}}},    {"$match": {"answer_len": {"$lte": 50}}},])

上面的代码会筛选所有赞同大于1000、字数小于50的回答,筛选出来的结果就是短小精辟的神回复。

以上是部分核心代码,由于篇幅有限,大家可以在公众号数据科学俱乐部后台回复“知乎”获取完整代码下载地址。

知乎神回复

代码写完了,我们来运行下看看。恰好昨天是程序员节,我们就来筛选一下和程序员有关的神回复。结果如下,一共75条搞笑段子?

1

Q: 码农们最常说的「谎言」有哪些?

A: //TODO

2

Q: 在 GitHub 上保持 365 天全绿是怎样一种体验?

A:

曾经保持了200多天全绿,但是冷落了女朋友,一直绿到现在。

3

Q: 如何反驳「程序员离开电脑就是废物」这个观点?

A: 不不不,很多程序员在电脑前也是废物。

4

Q: 假如有一天所有的人都使用计算机语言说话,会是怎样的场景?

A:

hello, world.烫烫烫烫烫烫烫�d}��R�0:�v�?.

5

Q: 突然想开一家程序员主题的餐馆,名字就叫程序员的菜,菜名就叫各种语言中的关键字,各位指点一哈,有前途没?

A: 进门一个大大的 hello world 
招牌菜叫“红烧产品经理”
一定会爆满的

6

Q: 什么是递归?

A: 「不宜公开讨论的政治内容」的定义和范畴本身也属于「不宜公开讨论的政治内容」

7

Q: 编程最基本的术语 “bug” 该怎么翻译?

A:

幺蛾子,你的程序又出幺蛾子了。

8

Q: 编程的乐趣是什么?

A: 人的成就感来源于两样东西,创造和毁灭。

9

Q: 如何反驳「程序员离开电脑就是废物」这个观点?

A: 老实说 跟这种女人都能聊下去 你是不是想上她?

10

Q: 作为程序员,你在编程时吃了哪些数学的亏?

A: 看论文时候一个"显然"推了我一下午

11

Q: 土豪程序员的设备都有啥?

A: 女朋友。。。

12

Q: 祈求代码不出 bug 该拜哪个神仙?

A: 拜雍正,专治八阿哥。

13

Q: 考上好大学学 IT 是不是当今中国穷人家孩子晋级中产唯一的出路?

A: 对,就4条路
写代码
搞金融
在代码圈搞金融
在金融圈写代码

14

Q: 为什么程序员无论到哪儿都喜欢背电脑包,哪怕里面没有装电脑?

A: 因为他们没有别的包。

15

Q: 「Talk is cheap. Show me the code」怎么翻译比较好?

A: 屁话少说,放码过来。

16

Q: 为什么程序员的女朋友或老婆颜值普遍要高于男方很多?还是说程序员已经算是婚恋市场的优质股了?

A: 程序员女朋友颜值高,我是服的,因为随便问十个程序员他的女朋友是谁,有九个回答是新垣结衣

17

Q: 为什么一部分人宁可买几个机械键盘换着用,也不愿意给自己敷一下面膜?

A:

老子不靠脸吃饭。

老子的辛辛苦苦挣来的钞票。老子想怎么花就怎么花。

18

Q: 程序员夫妻结婚戒指刻什么字好?

A: 0 error 0 warning

19

Q: IT 工程师被叫「码农」时是否会不舒服?

A: 我们好歹还是人,产品和设计已经是狗了……

20

Q: 为什么一个销售男(30岁)会约我一个男程序员(24岁)去小区附近的星巴克?

A: 根据哥多年的经验,他应该是有巨牛逼的idea然后只差程序员去实现了

21

Q: 怎么找到喜欢程序员的妹子做女友?

A: 看缘分,知乎上这么多用户,你关注到我就是缘分。

22

Q: 程序员女朋友如何给程序员男朋友过生日?

A: 告诉他,接口已经准备好了。

23

Q: 作为程序员,你是如何在工作以后找到女朋友的?

A: 题主作了这么久的程序员,还喜欢女孩子已经难能可贵了。

24

Q: 程序员转行烧烤需要做哪些准备,有哪些优势和劣势?

A: 你看,你连自己做烧烤都不知道优势劣势在哪里,所以,你还是需要一名产品经理。

25

Q: 哪些话可以惹火程序员?

A: 路过他电脑前时说一句,呦,又在写bug呢!

26

Q: 我的一位老师说,Java 适用于大型软件而 C# 适用中小型软件。这是真的么?

A: Java有项天赋,就是能把中小型软件写成大型的。

27

Q: 为什么 2014 年程序员薪资那么高?

A: 时薪又不高

28

Q: 是不是大部分程序员都在抱怨工资低?

A:

谁、谁在抱怨工资高?

29

Q: 单身程序狗解决了一个技术难题后没有妹子可以炫耀或夸一下自己怎么办?

A: 现在你明白了吧,为什么那么多程序员要写技术博客。

30

Q: 中国程序员是否偏爱「冲锋衣+牛仔裤+运动鞋」的衣着?如果是,为何会形成这样的潮流?

A: 穿那么好看给程序看吗?

31

Q: 作为 IT 从业人员,你觉得有什么工具大大提高了你的工作效率?

A:

单身

32

Q: 为什么我认为程序员似乎大多不善言辞?

A:

你就当是我们情商低就好了,

这样你开心,

我们也开心。

33

Q: 在中国,年龄最大的程序员不过40岁左右,请问中国的程序员未来还可以做什么?

A:

这跟为什么90后没人活过30岁是同一个原理

34

Q: 如何回复程序员发来的短信:「Hello world」?

A: hello nerd.

35

Q: 怎么看出 IT 男喜欢一个女生?

A: 当他拼着自己早已养成的寡言少语的习惯去死命的跟你套近乎的时候

36

Q: 为什么程序员不应该会修电脑?

A: 范冰冰需要会修电视机吗?

37

Q: 同事说自己 C++ 水平全中国第一,怎么让他意识到自己没那么厉害?

A:

实不相瞒,我也不是装逼:我的 C++ 水平全国第 0。

38

Q: 为什么 iPhone 删软件时,所有图标都要抖?

A: 第三方软件是吓得,系统自带软件是嘚瑟

39

Q: 左轮手枪装有一颗子弹,对着自己头开一枪奖励10万元,两枪1亿,三枪2亿,四枪4亿,5枪16亿,值得吗?

A:

只要不打要害,我告诉你,我能打到我们A站上市!!!!

40

Q: iPhone 处理器的性能按照现在每年翻一倍的节奏,是不是很快就能赶上甚至超过台式电脑的处理器?

A: 小时候我总觉得过两年我就能和大我两岁的哥哥一样大了。

41

Q: 知乎给你带来的最小限度的好处是什么?

A: 消磨时间还不觉得罪恶。

42

Q: 有哪些反人类的科技发明或设计?

A: 电脑连不上网,诊断以后它提示我要联网解决

43

Q: 为什么设计师不愿意被称为美工?

A: 只要工资开的高,叫我阿姨都行。

44

Q: 为什么有人认为网易云音乐是业界良心?

A: 有一天突然给我推送一条消息说我要的歌词找到了

45

Q: 为什么没有出现无人机自毁式攻击武器呢?恐怖分子用过吗?

A: 你是说导弹么?

46

Q: 既然思想是我的,那么为什么有时候我控制不了我的负面情绪?

A: 操作系统不会允许用户访问、修改及删除核心系统文件,因为这会损坏系统,导致运行异常。

47

Q: 鲁迅虽然很牛,但在这世界十大文豪里是不是凑数的?

A: 为什么文豪要为文盲排的榜买单?

48

Q: 人类的哪些科技已经接近瓶颈,很久没有重大突破了?

A: 烧开水

49

Q: 如何看待某些人下载软件喜欢到官网的偏好?

A: 同学你没中过百度全家桶吧?

50

Q: 为什么很多人买笔记本打游戏,而不用性能更好的台式机?

A: 因为买不起房子。。。

51

Q: 第一次听好耳机对你带来的震撼有多大?

A: 第一次听好耳机不会给人多大震撼,但是当换回普通耳机的时候,震撼就来了

52

Q: Chrome 真的很费电吗?

A: 不费电,我现在就在用Chrome,用到现在这么久,笔记本电量还有50%,我估讠

53

Q: MacBook 上安装 Windows 后的使用体验如何?

A: 像突然间有了软肋,并且还失去了铠甲。

54

Q: 家里所有有关产品都用苹果产品是一种什么体验?

A: 来个电话全家都响了起来

55

Q: 你为什么不买 iPhone X?

A: 日益增长的美好生活需要和贫穷的现实之间的矛盾

56

Q: 为什么有人愿意花几千元买 iPhone ,却不愿意花几十元买正版 iPhone 软件和游戏?

A: 因为他们下载不到iphone

57

Q: 有什么 App 取的名字特别惊艳?

A: 水表助手…是查快递的…

58

Q: 你为什么要买移动硬盘?

A: 条件好了也要给自己的女人们住舒适点啊

59

Q: 如何用 iPad 遥控 PC 关机?

A: 瞄准pc电源键扔过去

60

Q: 如何评价 2016 年 9 月 7 日的苹果发布会?

A: 为了新MacBook Pro,半年看了三场发布会……

61

Q: 如何评价 Internet Explorer?

A: 下载其他浏览器的浏览器
-----一年后-----
IE8以下好烂,做前端想哭的节奏。

62

Q: 爸妈让我攒钱买房,我却想买苹果电脑怎么办?

A: 你要真能3年攒50万的房子,差这1万7买个电脑么,大哥?

63

Q: 有哪些垃圾手机软件?

A: 短信拦截软件! 拦截后告诉你它拦截了一条短信。 我相信99%的人会再去点进去看一下被拦截的短信!

64

Q: 一个完整的 PPT 做下来,最让你头疼的是什么?

A: 怎样向领导隐藏自己的实力。

65

Q: 什么是 Vim 可以做而 Emacs 做不到的?

A: 帮助乌干达的可怜儿童……

66

Q: 苹果用户为什么选择苹果?

A: 因为不用苹果的用户不是苹果用户。

67

Q: 计算机世界里有哪些经典谣言?

A: windows正在联机寻找解决方案。

68

Q: 有线鼠标会被无线鼠标取代吗?

A: 我觉得在网吧有线鼠标就不会被取代

69

Q: 计算机世界里有哪些经典谣言?

A: 我已阅读并同意该条款

70

Q: 计算机系的学生都有哪些口头禅?

A: 我电脑上运行的好好的啊⋯⋯

71

Q: 如何看待百度官博公开辟谣涉李彦宏家事传闻?

A:

「中国人对隐私没那么敏感,愿意用隐私换取便利。」

——李彦宏

72

Q: 在飞机上遇到了马云该怎么聊天?

A: Hello Jack, my name is Jackson.

73

Q: 如何理解马云说八年后房如葱?

A:

赶紧买葱啊,葱要涨价了!!!

74

Q: 如何理解马云说的「把地主杀了,不等于你能富起来」这句话?

A: 他的意思是「别杀我」

75

Q: 如何看待百度在魏则西事件过去之后又悄悄的把承诺整改的广告提示颜色调淡了?

A: 请大家不要黑百度,我是做前端开发的,这是时间久了,网页CSS掉色了

◆ ◆ ◆  ◆ ◆

关注下方公众号数据科学俱乐部后台回复“知乎”获取本文完整代码

Python中文社区作为一个去中心化的全球技术社区,以成为全球20万Python中文开发者的精神部落为愿景,目前覆盖各大主流媒体和协作平台,与阿里、腾讯、百度、微软、亚马逊、开源中国、CSDN等业界知名公司和技术社区建立了广泛的联系,拥有来自十多个国家和地区数万名登记会员,会员来自以公安部、工信部、清华大学、北京大学、北京邮电大学、中国人民银行、中科院、中金、华为、BAT、谷歌、微软等为代表的政府机关、科研单位、金融机构以及海内外知名公司,全平台近20万开发者关注。

Python中文社区公众号底部回复“内推”

获取一周内推技术职位清单

▼ 点击下方阅读原文免费成为社区会员

用Python爬取知乎上关于程序员的神回复相关推荐

  1. python爬取知乎上的小姐姐

    知乎上的东西质量都很好,有些问题下会有很多很好的回答,其中就有些关于图片的. 比如: 你见过最漂亮的女生长什么样? 平常人可以漂亮到什么程度? 有没有第一次见就让人震惊的手机壁纸? 有哪些图片适合做电 ...

  2. Python爬取近10万条程序员招聘数据,告诉你哪类人才和技能最受热捧!

    来源:凹凸数据 本文约5800字,建议阅读15分钟 本文带你了解当下企业究竟需要招聘什么样的人才?需要什么样的技能? 随着科技的飞速发展,数据呈现爆发式的增长,任何人都摆脱不了与数据打交道,社会对于& ...

  3. Python爬虫:爬取知乎上的视频,并把下载链接保存到md文件中

    Python爬虫:爬取知乎上的视频,并把下载链接保存到md文件中 1.需要的Python模块 主要是requests模块,用于得到的网页的数据 安装命令为:pip install requests 2 ...

  4. 利用python爬取丁香医生上新型肺炎数据,并下载到本地,附带经纬度信息

    新增:国外疫情网站介绍 已更新:爬取国外疫情数据 已更新:新型肺炎历史数据下载 2020年3月27日补充: 制作了一个全球肺炎数据查询下载网站,效果如下: 访问地址:http://119.3.227. ...

  5. python爬取电脑本地数据_利用python爬取丁香医生上新型肺炎数据,并下载到本地,附带经纬度信息...

    原标题:利用python爬取丁香医生上新型肺炎数据,并下载到本地,附带经纬度信息 新型肺炎肆虐全国,可以预知,最近一两年地理学中会有一部分论文研究新型肺炎的空间分布及与其他指标的关联分析.获取其患病人 ...

  6. Python爬取知乎“神回复”,笑得根本停不下来(附代码)

    来源:Python与数据分析 本文约4600字,建议阅读10+分钟. 本文介绍如何爬取知乎的神回复,为你揭晓其背后的原理. 知乎上经常会有很多令人忍俊不禁的神回复,初看之下拍案叫绝,细思之下更是回味无 ...

  7. 如何用python爬取数据_如何使用python爬取知乎数据并做简单分析

    原标题:如何使用python爬取知乎数据并做简单分析 一.使用的技术栈: 爬虫:python27 +requests+json+bs4+time 分析工具: ELK套件 开发工具:pycharm 数据 ...

  8. python爬取知乎回答并进行舆情分析:舆情分析部分

    python爬取知乎回答并进行舆情分析:舆情分析部分 背景 生成词云 文本预处理(使用停用词.自定义分词) 统计词频 生成词云 折线图 统计每日回答数 生成折线图 展望 背景 在上一节中,利用爬虫爬取 ...

  9. python爬取知乎热榜了解时事

    python爬取知乎热榜了解时事 需求 ​ 知乎热榜是我们了解时事的一个重要途径,但是如果我们每天没有那么多时间来刷知乎,但是还是想要了解知乎热榜的话,我们该怎么办呢?在这里,我想到了通过知乎爬虫的手 ...

最新文章

  1. 在阿里云上创建一个个人网盘(owncloud)
  2. 【Java 虚拟机原理】Class 字节码二进制文件分析 二 ( 常量池位置 | 常量池结构 | tag | info[] | 完整分析字节码文件中的常量池二进制数据 )
  3. 4、Python运算符、比较运算符、赋值运算符、位运算符、逻辑运算符、成员运算符、身份运算符、运算符优先级(学些笔记)
  4. 计算机三级网络技术打印,全国计算机等级考试三级网络技术历年真题(整理_打印版)...
  5. [Google Code Jam] 2013-1A-C Good Luck 解法
  6. 《WF编程》系列之30 - 基本活动:错误处理
  7. 如何使用nginx配置SSL证书?
  8. python if else格式_【Python基础】流程控制-if..else
  9. 2018-2019-2 20165312《网络攻防技术》Exp7 网络欺诈防范
  10. 【POJ2453】An Easy Problem
  11. Kettle行列转换
  12. 【官方方法】MacBook2017 双系统恢复macOS High Sierra
  13. 安卓能硬改的手机机型_这款iPhone手机专属特效AR相机,我真的爱了
  14. 学生想学信息学奥赛: DEV-C++的安装与介绍
  15. R语言ggplot2可视化在轴标签、轴标题中添加大于号、等于号等实战
  16. 我的世界中国版服务器家园系统,《我的世界》中国版“暑期更新”上线 家园系统休闲玩法亮点...
  17. linux执行startx进入桌面黑屏,linux下误操作startx命令后,在登录界面进不去解决办法...
  18. 安装算量软件免费吗?鹏业安装算量(在线版):更简单、更高效
  19. java发送短信 短信平台
  20. 待定系数法求二阶常系数非齐次线性方程特解

热门文章

  1. 常用H5标签-第三部分
  2. Composer开启多线程组件改变composer缓慢问题
  3. DC/DC电路——自举电容(boost)的作用
  4. jQuery - 基于当前元素的遍历
  5. 自定义icon,在iconfont.css中引入自定义图标
  6. 别踩白块_前端H5游戏毕设
  7. mysql front 安全设置_MySQL-Front 操作限制 解决办法
  8. 容器类存储表格数据(12)
  9. Android 面试必备之 JVM 相关口水话,flutterpageview动画
  10. 《计算机组成原理》— 计算机组成原理试卷一(期末复习备用)