75条笑死人的知乎神回复,用60行代码就爬完了


Posted in Python onMay 06, 2019

读:知乎神回复都有些什么特点呢?其实爬取知乎神回复很简单,这篇文章我们就来揭晓一下背后的原理。

我们先来观察一下:

75条笑死人的知乎神回复,用60行代码就爬完了

 75条笑死人的知乎神回复,用60行代码就爬完了

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

01 爬取知乎回答

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

下面的函数用于爬取某一个指定话题的内容:

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,第二个参数表示爬的是第几页的内容。

爬下来的内容当中有几个需要注意的字段,下图中用黄框高亮出来了:

75条笑死人的知乎神回复,用60行代码就爬完了

这几个字段的含义如下:

  1. question.title - 问题的标题
  2. content - 回答的内容
  3. voteup_count - 赞同的数量

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

02 筛选回答

爬完数据后,我们来筛选一下结果。

我们用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的回答,筛选出来的结果就是短小精辟的神回复。

以上是核心代码,完整代码已上传github,大家可以在公众号后台回复知乎神回复获取地址。

03 知乎神回复

代码写完了,我们来运行下看看。恰好昨天是程序员节,我们就来筛选一下和程序员有关的神回复。结果如下,一共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: 第三方软件是吓得,系统自带软件是?N瑟

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爬取知乎回复详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python Tkinter GUI编程入门介绍
Mar 10 Python
Python的collections模块中的OrderedDict有序字典
Jul 07 Python
打包发布Python模块的方法详解
Sep 18 Python
Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例
Aug 07 Python
Python hashlib模块用法实例分析
Jun 12 Python
Python 使用类写装饰器的小技巧
Sep 30 Python
postman模拟访问具有Session的post请求方法
Jul 15 Python
Python列表(list)所有元素的同一操作解析
Aug 01 Python
python中有关时间日期格式转换问题
Dec 25 Python
Python semaphore evevt生产者消费者模型原理解析
Mar 18 Python
TensorFlow打印输出tensor的值
Apr 19 Python
golang/python实现归并排序实例代码
Aug 30 Python
Python Flask 搭建微信小程序后台详解
May 06 #Python
Python玩转PDF的各种骚操作
May 06 #Python
使用Python和Prometheus跟踪天气的使用方法
May 06 #Python
Python中常用的8种字符串操作方法
May 06 #Python
基于python if 判断选择结构的实例详解
May 06 #Python
20行python代码的入门级小游戏的详解
May 05 #Python
python2.7 安装pip的方法步骤(管用)
May 05 #Python
You might like
php像数组一样存取和修改字符串字符
2014/03/21 PHP
php修改指定文件后缀的方法
2014/09/11 PHP
mac下多个php版本快速切换的方法
2016/10/09 PHP
php 判断页面或图片是否经过gzip压缩的方法
2017/04/05 PHP
PHP crc32()函数讲解
2019/02/14 PHP
jQuery UI Datepicker length为空或不是对象错误的解决方法
2010/12/19 Javascript
JavaScript 判断浏览器是否支持SVG的代码
2013/03/21 Javascript
使用js 设置url参数
2013/07/08 Javascript
Javascript中的异步编程规范Promises/A详细介绍
2014/06/06 Javascript
jQuery 获取跨域XML(RSS)数据的相关总结分析
2016/05/18 Javascript
jQuery选择器及jquery案例详解(必看)
2016/05/20 Javascript
Vue.js学习之计算属性
2017/01/22 Javascript
jquery 实现复选框的全选操作实例代码
2017/01/24 Javascript
利用JavaScript如何查询某个值是否数组内
2017/07/30 Javascript
实例分析js事件循环机制
2017/12/13 Javascript
详解Vue单元测试case写法
2018/05/24 Javascript
Vue动态获取width的方法
2018/08/22 Javascript
vue路由对不同界面进行传参及跳转的总结
2019/04/20 Javascript
python实现linux服务器批量修改密码并生成execl
2014/04/22 Python
5种Python单例模式的实现方式
2016/01/14 Python
Python数据分析中Groupby用法之通过字典或Series进行分组的实例
2017/12/08 Python
python+influxdb+shell编写区域网络状况表
2018/07/27 Python
Python split() 函数拆分字符串将字符串转化为列的方法
2019/07/16 Python
python2 中 unicode 和 str 之间的转换及与python3 str 的区别
2019/07/25 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
2019/08/09 Python
python文字转语音实现过程解析
2019/11/12 Python
Python+OpenCV检测灯光亮点的实现方法
2020/11/02 Python
HTML5+lufylegend实现游戏中的卷轴
2016/02/29 HTML / CSS
巴基斯坦购物网站:Goto
2019/03/11 全球购物
求职简历推荐信范文
2013/12/02 职场文书
毕业证丢失证明
2014/01/15 职场文书
实习生自我评价
2014/01/18 职场文书
《晏子使楚》教学反思
2014/02/08 职场文书
《理想》教学反思
2014/02/17 职场文书
村级四风对照检查材料
2014/08/24 职场文书
Spring Boot 底层原理基础深度解析
2022/04/03 Java/Android