1
文章轉(zhuǎn)載至Python與數(shù)據(jù)分析(ID:PythonML),作者:沈仲?gòu)?qiáng)
先來(lái)觀察一下:


看出什么規(guī)律了么?
短小精辟有沒(méi)有?贊同很多有沒(méi)有?所以爬取知乎神回復(fù)我們只要爬取那些贊同多又字?jǐn)?shù)少的回答就可以。簡(jiǎn)單的兩個(gè)步驟就能實(shí)現(xiàn),第一步爬取知乎回答,第二部篩選回答。是不是很easy?
第一步我們爬取知乎上的回答。知乎上的回答太多了,一下子爬取所有的回答會(huì)很費(fèi)時(shí),我們可以選定幾個(gè)話題,爬取這幾個(gè)話題里的內(nèi)容。
下面的函數(shù)用于爬取某一個(gè)指定話題的內(nèi)容:

get_answers_by_page函數(shù)有兩個(gè)參數(shù),第一個(gè)參數(shù)是話題的id,第二個(gè)參數(shù)表示爬的是第幾頁(yè)的內(nèi)容。
爬下來(lái)的內(nèi)容當(dāng)中有幾個(gè)需要注意的字段,下圖中用黃框高亮出來(lái)了:

這幾個(gè)字段的含義如下:
question.title - 問(wèn)題的標(biāo)題
content - 回答的內(nèi)容
voteup_count - 贊同的數(shù)量
這些字段在下一步篩選回答的時(shí)候會(huì)用到。
爬完數(shù)據(jù)后,我們來(lái)篩選一下結(jié)果。
我們用MongoDB中的聚合管道對(duì)回答做篩選(關(guān)于MongoDB的聚合管道的用法可以參考Aggregation Pipeline Quick Reference這篇文章,地址:https://docs.mongodb.com/manual/meta/aggregation-quick-reference/
代碼如下:

上面的代碼會(huì)篩選所有贊同大于1000、字?jǐn)?shù)小于50的回答,篩選出來(lái)的結(jié)果就是短小精辟的神回復(fù)。
以上是核心代碼,完整代碼已上傳github,大家可以在公眾號(hào)后臺(tái)回復(fù)知乎神回復(fù)獲取地址。
Q: 碼農(nóng)們最常說(shuō)的「謊言」有哪些?
A: //TODO
Q: 在 GitHub 上保持 365 天全綠是怎樣一種體驗(yàn)?
A: 曾經(jīng)保持了200多天全綠,但是冷落了女朋友,一直綠到現(xiàn)在。
Q: 如何反駁「程序員離開(kāi)電腦就是廢物」這個(gè)觀點(diǎn)?
A: 不不不,很多程序員在電腦前也是廢物。
Q: 假如有一天所有的人都使用計(jì)算機(jī)語(yǔ)言說(shuō)話,會(huì)是怎樣的場(chǎng)景?
A: hello, world.燙燙燙燙燙燙燙?d}??R?0:?v??.
Q: 突然想開(kāi)一家程序員主題的餐館,名字就叫程序員的菜,菜名就叫各種語(yǔ)言中的關(guān)鍵字,各位指點(diǎn)一哈,有前途沒(méi)?
A: 進(jìn)門一個(gè)大大的 hello world ,招牌菜叫“紅燒產(chǎn)品經(jīng)理”,一定會(huì)爆滿的
Q: 什么是遞歸?
A: 「不宜公開(kāi)討論的政治內(nèi)容」的定義和范疇本身也屬于「不宜公開(kāi)討論的政治內(nèi)容」
Q: 編程最基本的術(shù)語(yǔ) “bug” 該怎么翻譯?
A: 幺蛾子,你的程序又出幺蛾子了。
Q: 編程的樂(lè)趣是什么?
A: 人的成就感來(lái)源于兩樣?xùn)|西,創(chuàng)造和毀滅。
Q: 如何反駁「程序員離開(kāi)電腦就是廢物」這個(gè)觀點(diǎn)?
A: 老實(shí)說(shuō) 跟這種女人都能聊下去 你是不是想上她?
Q: 作為程序員,你在編程時(shí)吃了哪些數(shù)學(xué)的虧?
A: 看論文時(shí)候一個(gè)"顯然"推了我一下午
Q: 土豪程序員的設(shè)備都有啥?
A: 女朋友。。。
Q: 祈求代碼不出 bug 該拜哪個(gè)神仙?
A: 拜雍正,專治八阿哥。
Q: 考上好大學(xué)學(xué) IT 是不是當(dāng)今中國(guó)窮人家孩子晉級(jí)中產(chǎn)唯一的出路?
A: 對(duì),就4條路:寫代碼;搞金融;在代碼圈搞金融;在金融圈寫代碼
Q: 為什么程序員無(wú)論到哪兒都喜歡背電腦包,哪怕里面沒(méi)有裝電腦?
A: 因?yàn)樗麄儧](méi)有別的包。
Q: 「Talk is cheap. Show me the code」怎么翻譯比較好?
A: 屁話少說(shuō),放碼過(guò)來(lái)。
Q: 為什么程序員的女朋友或老婆顏值普遍要高于男方很多?還是說(shuō)程序員已經(jīng)算是婚戀市場(chǎng)的優(yōu)質(zhì)股了?
A: 程序員女朋友顏值高,我是服的,因?yàn)殡S便問(wèn)十個(gè)程序員他的女朋友是誰(shuí),有九個(gè)回答是新垣結(jié)衣
Q: 為什么一部分人寧可買幾個(gè)機(jī)械鍵盤換著用,也不愿意給自己敷一下面膜?
A:老子不靠臉吃飯。老子的辛辛苦苦掙來(lái)的鈔票。老子想怎么花就怎么花。
Q: 程序員夫妻結(jié)婚戒指刻什么字好?
A: 0 error 0 warning
Q: IT 工程師被叫「碼農(nóng)」時(shí)是否會(huì)不舒服?
A: 我們好歹還是人,產(chǎn)品和設(shè)計(jì)已經(jīng)是狗了……
Q: 為什么一個(gè)銷售男(30歲)會(huì)約我一個(gè)男程序員(24歲)去小區(qū)附近的星巴克?
A: 根據(jù)哥多年的經(jīng)驗(yàn),他應(yīng)該是有巨牛逼的idea然后只差程序員去實(shí)現(xiàn)了
Q: 怎么找到喜歡程序員的妹子做女友?
A: 看緣分,知乎上這么多用戶,你關(guān)注到我就是緣分。
Q: 程序員女朋友如何給程序員男朋友過(guò)生日?
A: 告訴他,接口已經(jīng)準(zhǔn)備好了。
Q: 作為程序員,你是如何在工作以后找到女朋友的?
A: 題主作了這么久的程序員,還喜歡女孩子已經(jīng)難能可貴了。
Q: 程序員轉(zhuǎn)行燒烤需要做哪些準(zhǔn)備,有哪些優(yōu)勢(shì)和劣勢(shì)?
A: 你看,你連自己做燒烤都不知道優(yōu)勢(shì)劣勢(shì)在哪里,所以,你還是需要一名產(chǎn)品經(jīng)理。
Q: 哪些話可以惹火程序員?
A: 路過(guò)他電腦前時(shí)說(shuō)一句,呦,又在寫bug呢!
Q: 我的一位老師說(shuō),Java 適用于大型軟件而 C# 適用中小型軟件。這是真的么?
A: Java有項(xiàng)天賦,就是能把中小型軟件寫成大型的。
Q: 為什么 2014 年程序員薪資那么高?
A: 時(shí)薪又不高
Q: 是不是大部分程序員都在抱怨工資低?
A: 誰(shuí)、誰(shuí)在抱怨工資高?
Q: 單身程序狗解決了一個(gè)技術(shù)難題后沒(méi)有妹子可以炫耀或夸一下自己怎么辦?
A: 現(xiàn)在你明白了吧,為什么那么多程序員要寫技術(shù)博客。
Q: 中國(guó)程序員是否偏愛(ài)「沖鋒衣+牛仔褲+運(yùn)動(dòng)鞋」的衣著?如果是,為何會(huì)形成這樣的潮流?
A: 穿那么好看給程序看嗎?
Q: 作為 IT 從業(yè)人員,你覺(jué)得有什么工具大大提高了你的工作效率?
A: 單身
Q: 為什么我認(rèn)為程序員似乎大多不善言辭?
A:你就當(dāng)是我們情商低就好了,這樣你開(kāi)心,我們也開(kāi)心。
Q: 在中國(guó),年齡最大的程序員不過(guò)40歲左右,請(qǐng)問(wèn)中國(guó)的程序員未來(lái)還可以做什么?
A: 這跟為什么90后沒(méi)人活過(guò)30歲是同一個(gè)原理
Q: 如何回復(fù)程序員發(fā)來(lái)的短信:「Hello world」?
A: hello nerd.
Q: 怎么看出 IT 男喜歡一個(gè)女生?
A: 當(dāng)他拼著自己早已養(yǎng)成的寡言少語(yǔ)的習(xí)慣去死命的跟你套近乎的時(shí)候
Q: 為什么程序員不應(yīng)該會(huì)修電腦?
A: 范冰冰需要會(huì)修電視機(jī)嗎?
Q: 同事說(shuō)自己 C++ 水平全中國(guó)第一,怎么讓他意識(shí)到自己沒(méi)那么厲害?
A: 實(shí)不相瞞,我也不是裝逼:我的 C++ 水平全國(guó)第 0。
Q: 為什么 iPhone 刪軟件時(shí),所有圖標(biāo)都要抖?
A: 第三方軟件是嚇得,系統(tǒng)自帶軟件是嘚瑟
Q: 左輪手槍裝有一顆子彈,對(duì)著自己頭開(kāi)一槍獎(jiǎng)勵(lì)10萬(wàn)元,兩槍1億,三槍2億,四槍4億,5槍16億,值得嗎?
A: 只要不打要害,我告訴你,我能打到我們A站上市!!!!
Q: iPhone 處理器的性能按照現(xiàn)在每年翻一倍的節(jié)奏,是不是很快就能趕上甚至超過(guò)臺(tái)式電腦的處理器?
A: 小時(shí)候我總覺(jué)得過(guò)兩年我就能和大我兩歲的哥哥一樣大了。
Q: 知乎給你帶來(lái)的最小限度的好處是什么?
A: 消磨時(shí)間還不覺(jué)得罪惡。
Q: 有哪些反人類的科技發(fā)明或設(shè)計(jì)?
A: 電腦連不上網(wǎng),診斷以后它提示我要聯(lián)網(wǎng)解決
Q: 為什么設(shè)計(jì)師不愿意被稱為美工?
A: 只要工資開(kāi)的高,叫我阿姨都行。
Q: 為什么有人認(rèn)為網(wǎng)易云音樂(lè)是業(yè)界良心?
A: 有一天突然給我推送一條消息說(shuō)我要的歌詞找到了
Q: 為什么沒(méi)有出現(xiàn)無(wú)人機(jī)自毀式攻擊武器呢?恐怖分子用過(guò)嗎?
A: 你是說(shuō)導(dǎo)彈么?
Q: 既然思想是我的,那么為什么有時(shí)候我控制不了我的負(fù)面情緒?
A: 操作系統(tǒng)不會(huì)允許用戶訪問(wèn)、修改及刪除核心系統(tǒng)文件,因?yàn)檫@會(huì)損壞系統(tǒng),導(dǎo)致運(yùn)行異常。
Q: 魯迅雖然很牛,但在這世界十大文豪里是不是湊數(shù)的?
A: 為什么文豪要為文盲排的榜買單?
Q: 人類的哪些科技已經(jīng)接近瓶頸,很久沒(méi)有重大突破了?
A: 燒開(kāi)水
Q: 如何看待某些人下載軟件喜歡到官網(wǎng)的偏好?
A: 同學(xué)你沒(méi)中過(guò)百度全家桶吧?
Q: 為什么很多人買筆記本打游戲,而不用性能更好的臺(tái)式機(jī)?
A: 因?yàn)橘I不起房子。。。
Q: 第一次聽(tīng)好耳機(jī)對(duì)你帶來(lái)的震撼有多大?
A: 第一次聽(tīng)好耳機(jī)不會(huì)給人多大震撼,但是當(dāng)換回普通耳機(jī)的時(shí)候,震撼就來(lái)了
Q: Chrome 真的很費(fèi)電嗎?
A: 不費(fèi)電,我現(xiàn)在就在用Chrome,用到現(xiàn)在這么久,筆記本電量還有50%,我估讠
Q: MacBook 上安裝 Windows 后的使用體驗(yàn)如何?
A: 像突然間有了軟肋,并且還失去了鎧甲。
Q: 家里所有有關(guān)產(chǎn)品都用蘋果產(chǎn)品是一種什么體驗(yàn)?
A: 來(lái)個(gè)電話全家都響了起來(lái)
Q: 你為什么不買 iPhone X?
A: 日益增長(zhǎng)的美好生活需要和貧窮的現(xiàn)實(shí)之間的矛盾
Q: 為什么有人愿意花幾千元買 iPhone ,卻不愿意花幾十元買正版 iPhone 軟件和游戲?
A: 因?yàn)樗麄兿螺d不到iphone
Q: 有什么 App 取的名字特別驚艷?
A: 水表助手…是查快遞的…
Q: 你為什么要買移動(dòng)硬盤?
A: 條件好了也要給自己的女人們住舒適點(diǎn)啊
Q: 如何用 iPad 遙控 PC 關(guān)機(jī)?
A: 瞄準(zhǔn)pc電源鍵扔過(guò)去
Q: 如何評(píng)價(jià) 2016 年 9 月 7 日的蘋果發(fā)布會(huì)?
A: 為了新MacBook Pro,半年看了三場(chǎng)發(fā)布會(huì)……
Q: 如何評(píng)價(jià) Internet Explorer?
A: 下載其他瀏覽器的瀏覽器
-----一年后-----
IE8以下好爛,做前端想哭的節(jié)奏。
Q: 爸媽讓我攢錢買房,我卻想買蘋果電腦怎么辦?
A: 你要真能3年攢50萬(wàn)的房子,差這1萬(wàn)7買個(gè)電腦么,大哥?
Q: 有哪些垃圾手機(jī)軟件?
A: 短信攔截軟件! 攔截后告訴你它攔截了一條短信。 我相信99%的人會(huì)再去點(diǎn)進(jìn)去看一下被攔截的短信!
Q: 一個(gè)完整的 PPT 做下來(lái),最讓你頭疼的是什么?
A: 怎樣向領(lǐng)導(dǎo)隱藏自己的實(shí)力。
Q: 什么是 Vim 可以做而 Emacs 做不到的?
A: 幫助烏干達(dá)的可憐兒童……
Q: 蘋果用戶為什么選擇蘋果?
A: 因?yàn)椴挥锰O果的用戶不是蘋果用戶。
Q: 計(jì)算機(jī)世界里有哪些經(jīng)典謠言?
A: windows正在聯(lián)機(jī)尋找解決方案。
Q: 有線鼠標(biāo)會(huì)被無(wú)線鼠標(biāo)取代嗎?
A: 我覺(jué)得在網(wǎng)吧有線鼠標(biāo)就不會(huì)被取代
Q: 計(jì)算機(jī)世界里有哪些經(jīng)典謠言?
A: 我已閱讀并同意該條款
Q: 計(jì)算機(jī)系的學(xué)生都有哪些口頭禪?
A: 我電腦上運(yùn)行的好好的啊??
Q: 如何看待百度官博公開(kāi)辟謠涉李彥宏家事傳聞?
A:「中國(guó)人對(duì)隱私?jīng)]那么敏感,愿意用隱私換取便利。」——李彥宏
Q: 在飛機(jī)上遇到了馬云該怎么聊天?
A: Hello Jack, my name is Jackson.
Q: 如何理解馬云說(shuō)八年后房如蔥?
A: 趕緊買蔥啊,蔥要漲價(jià)了!!!
Q: 如何理解馬云說(shuō)的「把地主殺了,不等于你能富起來(lái)」這句話?
A: 他的意思是「別殺我」
Q: 如何看待百度在魏則西事件過(guò)去之后又悄悄的把承諾整改的廣告提示顏色調(diào)淡了?
A: 請(qǐng)大家不要黑百度,我是做前端開(kāi)發(fā)的,這是時(shí)間久了,網(wǎng)頁(yè)CSS掉色了