以前的一篇文章 爬虫爬了下知乎上的神回复,已笑趴~ 发布后,引起了你们热烈的反响。不少朋友以为很神奇,私下问强哥是怎么作到的,有的朋友还表示不太相信。其实爬取知乎神回复很简单,这篇文章咱们就来揭晓一下背后的原理。前端
知乎神回复都有些什么特色呢?咱们先来观察一下。java
你们看出什么规律了么?短小精辟有没有?赞同不少有没有?因此爬取知乎神回复咱们只要爬取那些赞同多又字数少的回答就能够。简单的两个步骤就能实现,第一步爬取知乎回答,第二部筛选回答。是否是很easy?python
第一步咱们爬取知乎上的回答。知乎上的回答太多了,一会儿爬取全部的回答会很费时,咱们能够选定几个话题,爬取这几个话题里的内容。git
下面的函数用于爬取某一个指定话题的内容程序员
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,第二个参数表示爬的是第几页的内容。github
爬下来的内容当中有几个须要注意的字段,下图中用黄框高亮出来了mongodb
这几个字段的含义以下:编程
这些字段在下一步筛选回答的时候会用到。json
爬完数据后,咱们来筛选一下结果。windows
咱们用MongoDB中的聚合管道对回答作筛选(关于MongoDB的聚合管道的用法能够参考Aggregation Pipeline 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,你们能够在【Python与数据分析】公众号后台回复“知乎神回复”获取地址。
代码写完了,咱们来运行下看看。刚好昨天是程序员节,咱们就来筛选一下和程序员有关的神回复。结果以下,一共75条搞笑段子😂
1
做者: 夏梓耀
连接: 码农们最常说的「谎话」有哪些?
来源: 知乎
Q: 码农们最常说的「谎话」有哪些? A: //TODO
2
做者: 匿名用户
连接: 在 GitHub 上保持 365 天全绿是怎样一种体验?
来源: 知乎
Q: 在 GitHub 上保持 365 天全绿是怎样一种体验? A: 曾经保持了200多天全绿,可是冷落了女友,一直绿到如今。
3
做者: 叛逆者
来源: 知乎
Q: 如何反驳「程序员离开电脑就是废物」这个观点? A: 不不不,不少程序员在电脑前也是废物。
4
做者: xlzd
连接: 假若有一天全部的人都使用计算机语言说话,会是怎样的场景?
来源: 知乎
Q: 假若有一天全部的人都使用计算机语言说话,会是怎样的场景? A: hello, world.烫烫烫烫烫烫烫�d}��R�0:�v�?.
5
做者: 知乎用户
连接: 忽然想开一家程序员主题的餐馆,名字就叫程序员的菜,菜名就叫各类语言中的关键字,各位指点一哈,有前途没?
来源: 知乎
Q: 忽然想开一家程序员主题的餐馆,名字就叫程序员的菜,菜名就叫各类语言中的关键字,各位指点一哈,有前途没? A: 进门一个大大的 hello world 招牌菜叫“红烧产品经理” 必定会爆满的
7
做者: 匿名用户
来源: 知乎
Q: 编程最基本的术语 “bug” 该怎么翻译? A: 幺蛾子,你的程序又出幺蛾子了。
8
做者: neksusk
连接: 编程的乐趣是什么?
来源: 知乎
Q: 编程的乐趣是什么? A: 人的成就感来源于两样东西,创造和毁灭。
9
做者: 麦克灵伟
来源: 知乎
Q: 如何反驳「程序员离开电脑就是废物」这个观点? A: 老实说 跟这种女人都能聊下去 你是否是想上她?
10
做者: Amb BAI
来源: 知乎
Q: 做为程序员,你在编程时吃了哪些数学的亏? A: 看论文时候一个"显然"推了我一下午
11
做者: 知乎用户
连接: 土豪程序员的设备都有啥?
来源: 知乎
Q: 土豪程序员的设备都有啥? A: 女友。。。
12
做者: 兔二
来源: 知乎
Q: 祈求代码不出 bug 该拜哪一个神仙? A: 拜雍正,专治八阿哥。
13
做者: 知乎用户
连接: 考上好大学学 IT 是否是当今中国穷人家孩子晋级中产惟一的出路?
来源: 知乎
Q: 考上好大学学 IT 是否是当今中国穷人家孩子晋级中产惟一的出路? A: 对,就4条路 写代码 搞金融 在代码圈搞金融 在金融圈写代码
14
做者: Cascade
连接: 为何程序员不管到哪儿都喜欢背电脑包,哪怕里面没有装电脑?
来源: 知乎
Q: 为何程序员不管到哪儿都喜欢背电脑包,哪怕里面没有装电脑? A: 由于他们没有别的包。
15
做者: SErHo
连接: 「Talk is cheap. Show me the code」怎么翻译比较好?
来源: 知乎
Q: 「Talk is cheap. Show me the code」怎么翻译比较好? A: 屁话少说,放码过来。
16
做者: An0th3r
连接: 为何程序员的女友或老婆颜值广泛要高于男方不少?仍是说程序员已经算是婚恋市场的优质股了?
来源: 知乎
Q: 为何程序员的女友或老婆颜值广泛要高于男方不少?仍是说程序员已经算是婚恋市场的优质股了? A: 程序员女友颜值高,我是服的,由于随便问十个程序员他的女友是谁,有九个回答是新垣结衣
17
做者: fullsail
连接: 为何一部分人宁肯买几个机械键盘换着用,也不肯意给本身敷一下面膜?
来源: 知乎
Q: 为何一部分人宁肯买几个机械键盘换着用,也不肯意给本身敷一下面膜? A: 老子不靠脸吃饭。 老子的辛辛苦苦挣来的钞票。老子想怎么花就怎么花。
18
做者: 苏予
连接: 程序员夫妻结婚戒指刻什么字好?
来源: 知乎
Q: 程序员夫妻结婚戒指刻什么字好? A: 0 error 0 warning
19
做者: 苏莉安
来源: 知乎
Q: IT 工程师被叫「码农」时是否会不舒服? A: 咱们好歹仍是人,产品和设计已是狗了……
20
做者: 白如冰
连接: 为何一个销售男(30岁)会约我一个男程序员(24岁)去小区附近的星巴克?
来源: 知乎
Q: 为何一个销售男(30岁)会约我一个男程序员(24岁)去小区附近的星巴克? A: 根据哥多年的经验,他应该是有巨牛逼的idea而后只差程序员去实现了
21
做者: 随喜
来源: 知乎
Q: 怎么找到喜欢程序员的妹子作女朋友? A: 看缘分,知乎上这么多用户,你关注到我就是缘分。
22
做者: 知乎用户
来源: 知乎
Q: 程序员女友如何给程序员男友过生日? A: 告诉他,接口已经准备好了。
23
做者: 程序员大叔
来源: 知乎
Q: 做为程序员,你是如何在工做之后找到女友的? A: 题主做了这么久的程序员,还喜欢女孩子已经难能难得了。
24
做者: 某个小超
来源: 知乎
Q: 程序员转行烧烤须要作哪些准备,有哪些优点和劣势? A: 你看,你连本身作烧烤都不知道优点劣势在哪里,因此,你仍是须要一名产品经理。
25
做者: Jack Ma
连接: 哪些话能够惹火程序员?
来源: 知乎
Q: 哪些话能够惹火程序员? A: 路过他电脑前时说一句,呦,又在写bug呢!
26
做者: 姚冬
连接: 个人一位老师说,Java 适用于大型软件而 C# 适用中小型软件。这是真的么?
来源: 知乎
Q: 个人一位老师说,Java 适用于大型软件而 C# 适用中小型软件。这是真的么? A: Java有项天赋,就是能把中小型软件写成大型的。 27
做者: 大猫 连接: 为何 2014 年程序员薪资那么高? 来源: 知乎
Q: 为何 2014 年程序员薪资那么高? A: 时薪又不高
28
做者: 廖雪峰
来源: 知乎
Q: 是否是大部分程序员都在抱怨工资低? A: 谁、谁在抱怨工资高?
29
做者: ze ran
连接: 单身程序狗解决了一个技术难题后没有妹子能够炫耀或夸一下本身怎么办?
来源: 知乎
Q: 单身程序狗解决了一个技术难题后没有妹子能够炫耀或夸一下本身怎么办? A: 如今你明白了吧,为何那么多程序员要写技术博客。
30
做者: 知乎用户
连接: 中国程序员是否偏心「冲锋衣+牛仔裤+运动鞋」的衣着?若是是,为什么会造成这样的潮流?
来源: 知乎
Q: 中国程序员是否偏心「冲锋衣+牛仔裤+运动鞋」的衣着?若是是,为什么会造成这样的潮流? A: 穿那么好看给程序看吗?
31
做者: 匿名用户
连接: 做为 IT 从业人员,你以为有什么工具大大提升了你的工做效率?
来源: 知乎
Q: 做为 IT 从业人员,你以为有什么工具大大提升了你的工做效率? A: 单身
32
做者: 温酒
来源: 知乎
Q: 为何我认为程序员彷佛大多不善言辞? A: 你就当是咱们情商低就行了, 这样你开心, 咱们也开心。
33
做者: vczh
连接: 在中国,年龄最大的程序员不过40岁左右,请问中国的程序员将来还能够作什么?
来源: 知乎
Q: 在中国,年龄最大的程序员不过40岁左右,请问中国的程序员将来还能够作什么? A: 这跟为何90后没人活过30岁是同一个原理
34
做者: ze ran
连接: 如何回复程序员发来的短信:「Hello world」?
来源: 知乎
Q: 如何回复程序员发来的短信:「Hello world」? A: hello nerd.
35
做者: 李继刚
连接: 怎么看出 IT 男喜欢一个女生?
来源: 知乎
Q: 怎么看出 IT 男喜欢一个女生? A: 当他拼着本身早已养成的寡言少语的习惯去死命的跟你套近乎的时候
36
做者: 叛逆者
连接: 为何程序员不该该会修电脑?
来源: 知乎
Q: 为何程序员不该该会修电脑? A: 范冰冰须要会修电视机吗?
37
做者: 匿名用户
连接: 同事说本身 C++ 水平全中国第一,怎么让他意识到本身没那么厉害?
来源: 知乎
Q: 同事说本身 C++ 水平全中国第一,怎么让他意识到本身没那么厉害? A: 实不相瞒,我也不是装逼:个人 C++ 水平全国第 0。
38
做者: 刘小脑壳
来源: 知乎
Q: 为何 iPhone 删软件时,全部图标都要抖? A: 第三方软件是吓得,系统自带软件是嘚瑟
39
做者: AcFun弹幕视频网
连接: 左轮手枪装有一颗子弹,对着本身头开一枪奖励10万元,两枪1亿,三枪2亿,四枪4亿,5枪16亿,值得吗?
来源: 知乎
Q: 左轮手枪装有一颗子弹,对着本身头开一枪奖励10万元,两枪1亿,三枪2亿,四枪4亿,5枪16亿,值得吗? A: 只要不打要害,我告诉你,我能打到咱们A站上市!!!!
40
做者: 张小贱
连接: iPhone 处理器的性能按照如今每一年翻一倍的节奏,是否是很快就能遇上甚至超过台式电脑的处理器?
来源: 知乎
Q: iPhone 处理器的性能按照如今每一年翻一倍的节奏,是否是很快就能遇上甚至超过台式电脑的处理器? A: 小时候我总以为过两年我就能和大我两岁的哥哥同样大了。
41
做者: 解磊
来源: 知乎
Q: 知乎给你带来的最小限度的好处是什么? A: 消磨时间还不以为罪恶。
42
做者: Derek Chan
连接: 有哪些反人类的科技发明或设计?
来源: 知乎
Q: 有哪些反人类的科技发明或设计? A: 电脑连不上网,诊断之后它提示我要联网解决
43
做者: 汪唯
连接: 为何设计师不肯意被称为美工?
来源: 知乎
Q: 为何设计师不肯意被称为美工? A: 只要工资开的高,叫我阿姨都行。
44
做者: Mr.Robot
来源: 知乎
Q: 为何有人认为网易云音乐是业界良心? A: 有一天忽然给我推送一条消息说我要的歌词找到了
45
做者: 知乎用户
连接: 为何没有出现无人机自毁式攻击武器呢?恐怖分子用过吗?
来源: 知乎
Q: 为何没有出现无人机自毁式攻击武器呢?恐怖分子用过吗? A: 你是说导弹么?
46
做者: 安雅
连接: 既然思想是个人,那么为何有时候我控制不了个人负面情绪?
来源: 知乎
Q: 既然思想是个人,那么为何有时候我控制不了个人负面情绪? A: 操做系统不会容许用户访问、修改及删除核心系统文件,由于这会损坏系统,致使运行异常。
47
做者: isotone
来源: 知乎
Q: 鲁迅虽然很牛,但在这世界十大文豪里是否是凑数的? A: 为何文豪要为文盲排的榜买单?
48
做者: 念缺一Miracle
来源: 知乎
Q: 人类的哪些科技已经接近瓶颈,好久没有重大突破了? A: 烧开水
49
做者: vczh
来源: 知乎
Q: 如何看待某些人下载软件喜欢到官网的偏好? A: 同窗你没中过百度全家桶吧?
50
做者: 知乎用户
来源: 知乎
Q: 为何不少人买笔记本打游戏,而不用性能更好的台式机? A: 由于买不起房子。。。
51
做者: DillyLiu
来源: 知乎
Q: 第一次听好耳机对你带来的震撼有多大? A: 第一次听好耳机不会给人多大震撼,可是当换回普通耳机的时候,震撼就来了
52
做者: 林灿斌
连接: Chrome 真的很费电吗?
来源: 知乎
Q: Chrome 真的很费电吗? A: 不费电,我如今就在用Chrome,用到如今这么久,笔记本电量还有50%,我估讠
53
做者: 王文瀚
连接: MacBook 上安装 Windows 后的使用体验如何?
来源: 知乎
Q: MacBook 上安装 Windows 后的使用体验如何? A: 像忽然间有了软肋,而且还失去了铠甲。
54
做者: suchsu
来源: 知乎
Q: 家里全部有关产品都用苹果产品是一种什么体验? A: 来个电话全家都响了起来
55
做者: 蛋黄酱摧毁停车场
连接: 你为何不买 iPhone X?
来源: 知乎
Q: 你为何不买 iPhone X? A: 日益增加的美好生活须要和贫穷的现实之间的矛盾
56
做者: 张鑫
连接: 为何有人愿意花几千元买 iPhone ,却不肯意花几十元买正版 iPhone 软件和游戏?
来源: 知乎
Q: 为何有人愿意花几千元买 iPhone ,却不肯意花几十元买正版 iPhone 软件和游戏? A: 由于他们下载不到iphone
57
做者: 苦瓜
来源: 知乎
Q: 有什么 App 取的名字特别惊艳? A: 水表助手…是查快递的…
58
做者: 王斯塔
连接: 你为何要买移动硬盘?
来源: 知乎
Q: 你为何要买移动硬盘? A: 条件好了也要给本身的女人们住温馨点啊
59
做者: 叛逆者
来源: 知乎
Q: 如何用 iPad 遥控 PC 关机? A: 瞄准pc电源键扔过去
60
做者: 知乎用户
连接: 如何评价 2016 年 9 月 7 日的苹果发布会?
来源: 知乎
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
做者: Simon阿文
来源: 知乎
Q: 一个完整的 PPT 作下来,最让你头疼的是什么? A: 怎样向领导隐藏本身的实力。
65
做者: 孙经东
来源: 知乎
Q: 什么是 Vim 能够作而 Emacs 作不到的? A: 帮助乌干达的可怜儿童……
66
做者: 王二小
连接: 苹果用户为何选择苹果?
来源: 知乎
Q: 苹果用户为何选择苹果? A: 由于不用苹果的用户不是苹果用户。
67
做者: 唐缺
连接: 计算机世界里有哪些经典谣言?
来源: 知乎
Q: 计算机世界里有哪些经典谣言? A: windows正在联机寻找解决方案。
68
做者: 羽扇纶巾2010
连接: 有线鼠标会被无线鼠标取代吗?
来源: 知乎
Q: 有线鼠标会被无线鼠标取代吗? A: 我以为在网吧有线鼠标就不会被取代
69
做者: 北上
连接: 计算机世界里有哪些经典谣言?
来源: 知乎
Q: 计算机世界里有哪些经典谣言? A: 我已阅读并赞成该条款
70
做者: 有时右逝
连接: 魔兽圈中有哪些搞笑的事件?
来源: 知乎
Q: 魔兽圈中有哪些搞笑的事件? A: 你好,我以为我就是魔兽世界里最大的笑话……
71
做者: CCafe
连接: 计算机系的学生都有哪些口头禅?
来源: 知乎
Q: 计算机系的学生都有哪些口头禅? A: 我电脑上运行的好好的啊⋯⋯
72
做者: 贝尔
连接: 在飞机上遇到了马云该怎么聊天?
来源: 知乎
Q: 在飞机上遇到了马云该怎么聊天? A: Hello Jack, my name is Jackson.
73
做者: 匿名用户
连接: 如何理解马云说八年后房如葱?
来源: 知乎
Q: 如何理解马云说八年后房如葱? A: 赶忙买葱啊,葱要涨价了!!!
74
做者: Colliot
连接: 如何理解马云说的「把地主杀了,不等于你能富起来」这句话?
来源: 知乎
Q: 如何理解马云说的「把地主杀了,不等于你能富起来」这句话? A: 他的意思是「别杀我」
75
做者: justjavac
连接: 如何看待百度在魏则西事件过去以后又悄悄的把承诺整改的广告提示颜色调淡了?
来源: 知乎
Q: 如何看待百度在魏则西事件过去以后又悄悄的把承诺整改的广告提示颜色调淡了? A: 请你们不要黑百度,我是作前端开发的,这是时间久了,网页CSS掉色了