自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

用Python爬了知乎“神回復(fù)”,笑得根本停不下來(lái)

開(kāi)發(fā) 后端 開(kāi)發(fā)工具
知乎上經(jīng)常會(huì)有很多令人忍俊不禁的神回復(fù),初看之下拍案叫絕,細(xì)思之下更是回味無(wú)窮。本文就來(lái)介紹下如何爬取知乎的神回復(fù),揭曉其背后的原理。

 知乎上經(jīng)常會(huì)有很多令人忍俊不禁的神回復(fù),初看之下拍案叫絕,細(xì)思之下更是回味無(wú)窮。本文就來(lái)介紹下如何爬取知乎的神回復(fù),揭曉其背后的原理。

[[249068]]

知乎神回復(fù)都有些什么特點(diǎn)呢?我們先來(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)容:

  1. def get_answers_by_page(topic_id, page_no): 
  2.     offset = page_no * 10 
  3.     url = <topic_url> # topic_url是這個(gè)話題對(duì)應(yīng)的url 
  4.     headers = { 
  5.         "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"
  6.     } 
  7.     r = requests.get(url, verify=False, headers=headers) 
  8.     content = r.content.decode("utf-8"
  9.     data = json.loads(content) 
  10.     is_end = data["paging"]["is_end"
  11.     items = data["data"
  12.     client = pymongo.MongoClient() 
  13.     db = client["zhihu"
  14.     if len(items) > 0: 
  15.         db.answers.insert_many(items) 
  16.         db.saved_topics.insert({"topic_id": topic_id, "page_no": page_no}) 
  17.     return is_end 

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:?jiǎ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 這篇文章:

  1. https://docs.mongodb.com/manual/meta/aggregation-quick-reference/ 

代碼如下:

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

上面的代碼會(huì)篩選所有贊同大于 1000、字?jǐn)?shù)小于 50 的回答,篩選出來(lái)的結(jié)果就是短小精辟的神回復(fù)。

以上是核心代碼,完整代碼已上傳 GitHub:

  1. https://github.com/pythonml/answer 

知乎神回復(fù)

代碼寫(xiě)完了,我們來(lái)運(yùn)行下看看。由于關(guān)注者大部分是程序員,我們來(lái)篩選一下和程序員有關(guān)的神回復(fù)。結(jié)果如下,近百條搞笑段子

[[249070]]

PS:段子僅僅是作為爬蟲(chóng)的結(jié)果展示,供大家一笑!大家可以在評(píng)論區(qū)討論下哪個(gè)段子最逗!

1

Q:碼農(nóng)們最常說(shuō)的「謊言」有哪些?

A://TODO

2

Q:計(jì)算機(jī)系的學(xué)生都有哪些口頭禪?

A:我電腦上運(yùn)行的好好的啊??

3

Q:如何反駁「程序員離開(kāi)電腦就是廢物」這個(gè)觀點(diǎn)?

A:不不不,很多程序員在電腦前也是廢物。

4

Q:假如有一天所有的人都使用計(jì)算機(jī)語(yǔ)言說(shuō)話,會(huì)是怎樣的場(chǎng)景?

A:hello,world。燙燙燙燙燙燙燙?d}??R?0:?v??.

5

Q:突然想開(kāi)一家程序員主題的餐館,名字就叫程序員的菜,菜名就叫各種語(yǔ)言中的關(guān)鍵字,各位指點(diǎn)一哈,有前途沒(méi)?

A:進(jìn)門(mén)一個(gè)大大的 hello world,招牌菜叫“紅燒產(chǎn)品經(jīng)理”,一定會(huì)爆滿(mǎn)的。

6

Q:什么是遞歸?

A:「不宜公開(kāi)討論的政治內(nèi)容」的定義和范疇本身也屬于「不宜公開(kāi)討論的政治內(nèi)容」

7

Q:編程最基本的術(shù)語(yǔ) “Bug” 該怎么翻譯?

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

8

Q:編程的樂(lè)趣是什么?

A:人的成就感來(lái)源于兩樣?xùn)|西,創(chuàng)造和毀滅。

9

Q:計(jì)算機(jī)世界里有哪些經(jīng)典謠言?

A:我已閱讀并同意該條款。

10

Q:作為程序員,你在編程時(shí)吃了哪些數(shù)學(xué)的虧?

A:看論文時(shí)候一個(gè)"顯然"推了我一下午。

11

Q:土豪程序員的設(shè)備都有啥?

A:女朋友。。。

12

Q:祈求代碼不出 Bug 該拜哪個(gè)神仙?

A:拜雍正,專(zhuān)治八阿哥。

13

Q:考上好大學(xué)學(xué) IT 是不是當(dāng)今中國(guó)窮人家孩子晉級(jí)中產(chǎn)唯一的出路?

A:對(duì),就 4 條路,寫(xiě)代碼,搞金融,在代碼圈搞金融,在金融圈寫(xiě)代碼。

14

Q:為什么程序員無(wú)論到哪兒都喜歡背電腦包,哪怕里面沒(méi)有裝電腦?

A:因?yàn)樗麄儧](méi)有別的包。

15

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

A:屁話少說(shuō),放碼過(guò)來(lái)。

16

Q:為什么程序員的女朋友或老婆顏值普遍要高于男方很多?還是說(shuō)程序員已經(jīng)算是婚戀市場(chǎng)的優(yōu)質(zhì)股了?

A:程序員女朋友顏值高,我是服的,因?yàn)殡S便問(wèn)十個(gè)程序員他的女朋友是誰(shuí),有九個(gè)回答是新垣結(jié)衣。

17

Q:為什么一部分人寧可買(mǎi)幾個(gè)機(jī)械鍵盤(pán)換著用,也不愿意給自己敷一下面膜?

A:老子不靠臉吃飯。老子靠辛辛苦苦掙來(lái)的鈔票。老子想怎么花就怎么花。

18

Q:程序員夫妻結(jié)婚戒指刻什么字好?

A:0 error 0 warning。

19

Q:IT 工程師被叫「碼農(nóng)」時(shí)是否會(huì)不舒服?

A:我們好歹還是人,產(chǎn)品和設(shè)計(jì)已經(jīng)是狗了……

20

Q:為什么一個(gè)銷(xiāo)售男(30歲)會(huì)約我一個(gè)男程序員(24歲)去小區(qū)附近的星巴克?

A:根據(jù)哥多年的經(jīng)驗(yàn),他應(yīng)該是有巨牛逼的 idea 然后只差程序員去實(shí)現(xiàn)了。

21

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

A:看緣分,知乎上這么多用戶(hù),你關(guān)注到我就是緣分。

22

Q:程序員女朋友如何給程序員男朋友過(guò)生日?

A:告訴他,接口已經(jīng)準(zhǔn)備好了。

23

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

A:題主作了這么久的程序員,還喜歡女孩子已經(jīng)難能可貴了。

24

Q:程序員轉(zhuǎn)行燒烤需要做哪些準(zhǔn)備,有哪些優(yōu)勢(shì)和劣勢(shì)?

A:你看,你連自己做燒烤都不知道優(yōu)勢(shì)劣勢(shì)在哪里,所以,你還是需要一名產(chǎn)品經(jīng)理。

25

Q:哪些話可以惹火程序員?

A:路過(guò)他電腦前時(shí)說(shuō)一句,呦,又在寫(xiě) Bug 呢!

26

Q:我的一位老師說(shuō),Java 適用于大型軟件而 C# 適用中小型軟件。這是真的么?

A:Java 有項(xiàng)天賦,就是能把中小型軟件寫(xiě)成大型的。

27

Q:為什么 2014 年程序員薪資那么高?

A:時(shí)薪又不高。

28

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

A:誰(shuí)、誰(shuí)在抱怨工資高?

29

Q:?jiǎn)紊沓绦蚬方鉀Q了一個(gè)技術(shù)難題后沒(méi)有妹子可以炫耀或夸一下自己怎么辦?

A:現(xiàn)在你明白了吧,為什么那么多程序員要寫(xiě)技術(shù)博客。

30

Q:中國(guó)程序員是否偏愛(ài)「沖鋒衣+牛仔褲+運(yùn)動(dòng)鞋」的衣著?如果是,為何會(huì)形成這樣的潮流?

A:穿那么好看給程序看嗎?

31

Q:作為 IT 從業(yè)人員,你覺(jué)得有什么工具大大提高了你的工作效率?

A:?jiǎn)紊怼?/p>

32

Q:為什么我認(rèn)為程序員似乎大多不善言辭?

A:你就當(dāng)是我們情商低就好了,這樣你開(kāi)心,我們也開(kāi)心。

33

Q:在中國(guó),年齡最大的程序員不過(guò) 40 歲左右,請(qǐng)問(wèn)中國(guó)的程序員未來(lái)還可以做什么?

A:這跟為什么 90 后沒(méi)人活過(guò) 30 歲是同一個(gè)原理。

34

Q:如何回復(fù)程序員發(fā)來(lái)的短信:「Hello world」?

A:hello nerd。

35

Q:怎么看出 IT 男喜歡一個(gè)女生?

A:當(dāng)他拼著自己早已養(yǎng)成的寡言少語(yǔ)的習(xí)慣去死命的跟你套近乎的時(shí)候。

36

Q:有線鼠標(biāo)會(huì)被無(wú)線鼠標(biāo)取代嗎?

A:我覺(jué)得在網(wǎng)吧有線鼠標(biāo)就不會(huì)被取代。

37

Q:同事說(shuō)自己 C++ 水平全中國(guó)第一,怎么讓他意識(shí)到自己沒(méi)那么厲害?

A:實(shí)不相瞞,我也不是裝逼:我的 C++ 水平全國(guó)第 0。

38

Q:為什么 iPhone 刪軟件時(shí),所有圖標(biāo)都要抖?

A:第三方軟件是嚇得,系統(tǒng)自帶軟件是嘚瑟。

39

Q:計(jì)算機(jī)世界里有哪些經(jīng)典謠言?

A:Windows 正在聯(lián)機(jī)尋找解決方案。

40

Q:iPhone 處理器的性能按照現(xiàn)在每年翻一倍的節(jié)奏,是不是很快就能趕上甚至超過(guò)臺(tái)式電腦的處理器?

A:小時(shí)候我總覺(jué)得過(guò)兩年我就能和大我兩歲的哥哥一樣大了。

41

Q:知乎給你帶來(lái)的最小限度的好處是什么?

A:消磨時(shí)間還不覺(jué)得罪惡。

42

Q:有哪些反人類(lèi)的科技發(fā)明或設(shè)計(jì)?

A:電腦連不上網(wǎng),診斷以后它提示我要聯(lián)網(wǎng)解決。

43

Q:為什么設(shè)計(jì)師不愿意被稱(chēng)為美工?

A:只要工資開(kāi)的高,叫我阿姨都行。

44

Q:為什么有人認(rèn)為網(wǎng)易云音樂(lè)是業(yè)界良心?

A:有一天突然給我推送一條消息說(shuō)我要的歌詞找到了

45

Q:為什么沒(méi)有出現(xiàn)無(wú)人機(jī)自毀式攻擊武器呢?恐怖分子用過(guò)嗎?

A:你是說(shuō)導(dǎo)彈么?

46

Q:既然思想是我的,那么為什么有時(shí)候我控制不了我的負(fù)面情緒?

A:操作系統(tǒng)不會(huì)允許用戶(hù)訪問(wèn)、修改及刪除核心系統(tǒng)文件,因?yàn)檫@會(huì)損壞系統(tǒng),導(dǎo)致運(yùn)行異常。

47

Q:魯迅雖然很牛,但在這世界十大文豪里是不是湊數(shù)的?

A:為什么文豪要為文盲排的榜買(mǎi)單?

48

Q:人類(lèi)的哪些科技已經(jīng)接近瓶頸,很久沒(méi)有重大突破了?

A:燒開(kāi)水。

49

Q:如何看待某些人下載軟件喜歡到官網(wǎng)的偏好?

A:同學(xué)你沒(méi)中過(guò)百度全家桶吧?

50

Q:為什么很多人買(mǎi)筆記本打游戲,而不用性能更好的臺(tái)式機(jī)?

A:因?yàn)橘I(mǎi)不起房子。。。

51

Q:第一次聽(tīng)好耳機(jī)對(duì)你帶來(lái)的震撼有多大?

A:第一次聽(tīng)好耳機(jī)不會(huì)給人多大震撼,但是當(dāng)換回普通耳機(jī)的時(shí)候,震撼就來(lái)了。

52

Q:Chrome 真的很費(fèi)電嗎?

A:不費(fèi)電,我現(xiàn)在就在用 Chrome,用到現(xiàn)在這么久,筆記本電量還有 50%,我估讠

53

Q:MacBook 上安裝 Windows 后的使用體驗(yàn)如何?

A:像突然間有了軟肋,并且還失去了鎧甲。

54

Q:家里所有有關(guān)產(chǎn)品都用蘋(píng)果產(chǎn)品是一種什么體驗(yàn)?

A:來(lái)個(gè)電話全家都響了起來(lái)。

55

Q:你為什么不買(mǎi) iPhone X?

A:日益增長(zhǎng)的美好生活需要和貧窮的現(xiàn)實(shí)之間的矛盾。

56

Q:為什么有人愿意花幾千元買(mǎi) iPhone ,卻不愿意花幾十元買(mǎi)正版 iPhone  軟件和游戲?

A:因?yàn)樗麄兿螺d不到 iPhone。

57

Q:有什么 App 取的名字特別驚艷?

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

58

Q:你為什么要買(mǎi)移動(dòng)硬盤(pán)?

A:條件好了也要給自己的女人們住舒適點(diǎn)啊。

59

Q:如何用 iPad 遙控 PC 關(guān)機(jī)?

A:瞄準(zhǔn) PC 電源鍵扔過(guò)去。

60

Q:如何評(píng)價(jià) 2016 年 9 月 7 日的蘋(píng)果發(fā)布會(huì)?

A:為了新 MacBook Pro,半年看了三場(chǎng)發(fā)布會(huì)……

61

Q:如何評(píng)價(jià) Internet Explorer?

A:下載其他瀏覽器的瀏覽器。

-----一年后-----

IE8 以下好爛,做前端想哭的節(jié)奏。

62

Q:爸媽讓我攢錢(qián)買(mǎi)房,我卻想買(mǎi)蘋(píng)果電腦怎么辦?

A:你要真能 3 年攢 50 萬(wàn)的房子,差這 1 萬(wàn) 7 買(mǎi)個(gè)電腦么,大哥?

63

Q:有哪些垃圾手機(jī)軟件?

A:短信攔截軟件! 攔截后告訴你它攔截了一條短信。 我相信 99% 的人會(huì)再去點(diǎn)進(jìn)去看一下被攔截的短信!

64

Q:一個(gè)完整的 PPT 做下來(lái),最讓你頭疼的是什么?

A:怎樣向領(lǐng)導(dǎo)隱藏自己的實(shí)力。

65

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

A:幫助烏干達(dá)的可憐兒童……

66

Q:蘋(píng)果用戶(hù)為什么選擇蘋(píng)果?

A:因?yàn)椴挥锰O(píng)果的用戶(hù)不是蘋(píng)果用戶(hù)。

67

Q:為什么程序員不應(yīng)該會(huì)修電腦?

A:范冰冰需要會(huì)修電視機(jī)嗎?

68

Q:你隨身攜帶或佩戴最久的那件東西是什么?對(duì)你有什么特殊的意義?

A:眼鏡,因?yàn)橄埂?/p>

69

Q:顏值真的有那么重要嗎?

A:同樣是互聯(lián)網(wǎng)巨頭,李彥宏是老公,而馬云只能當(dāng)爸爸。

70

Q:為什么人常會(huì)在黑夜里,變得矯情萬(wàn)分?

A:要渲染的圖像少了,CPU 就有空閑來(lái)思考人生了。

71

Q:你第一次跳槽是什么原因?后悔嗎?

A:我上班就是為了錢(qián),他非得和我談理想,可我的理想是不上班…

72

Q:面試的時(shí)候被人問(wèn)到為什么你沒(méi)有去清華大學(xué),你該怎么回答?

A:“去了,但保安沒(méi)讓進(jìn)。”

73

Q:接了阿里 Offer 后毀約會(huì)被拉黑嗎?

A:得打個(gè)電話,讓對(duì)方擁抱變化。

74

Q:男生在【日常打扮】中如何才能穿出二次元的感覺(jué),同時(shí)顯得得體又不怪異?

A:穿女裝就好了。

75

Q:IT 界有哪些有意思的短笑話?

A:winrarsetup.rar。

76

Q:平時(shí)開(kāi)玩笑開(kāi)習(xí)慣了,結(jié)果跟女生表白人家以為我是開(kāi)玩笑呢,怎么辦?

A:她才沒(méi)誤會(huì)呢,只是她比較善良。

77

Q:怎樣拒絕女生的告白?

A:對(duì)不起,我是個(gè)好人。

78

Q:你會(huì)在意你的戀人有異性閨蜜嗎?

A:女人永遠(yuǎn)不會(huì)明白男人為什么懷疑她跟別的男人的友誼,因?yàn)槟腥颂私饽腥肆耍?/p>

79

Q:如何成為“交際花”?

A:善解人異,善解人疑,善解人意,善解人衣。

80

Q:如何優(yōu)雅地拒絕他人的表白?

A:我知道了,你先回去等消息吧~

81

Q:在哪里可更高幾率遇見(jiàn)高質(zhì)量男生?

A:兩會(huì)的時(shí)候可以去逛逛,每個(gè)地方牛逼的大叔都在那。

82

Q:為什么那么多人說(shuō)自己寂寞、孤單、想找個(gè)男/女朋友,卻還是單身?

A:因?yàn)椴粌H自己丑,還嫌別人長(zhǎng)得丑。

83

Q:做備胎是什么感覺(jué)?

A:每一句話都是密碼

84

Q:滾床單來(lái)不及卸妝怎么辦?

A:別啊,我要的就是阿凡達(dá)。

85

Q:男生堅(jiān)持每天給女生說(shuō)晚安,持續(xù)一年會(huì)怎樣?

A:IE 天天都問(wèn)我要不要把它設(shè)定為默認(rèn)瀏覽器,已經(jīng)好幾年了。

86

Q:女生送青蛙玩具給男生,代表什么意思?

A:我送你個(gè)青蛙,你好歹還我點(diǎn)蝌蚪吧。

87

Q:女生的長(zhǎng)相重要嗎?

A:重要,一般姑娘撒個(gè)嬌就能解決的問(wèn)題我都得靠武力。

88

Q:你為什么還單身?

A:因?yàn)閱紊肀容^專(zhuān)注,單身使人進(jìn)步~

89

Q:為什么絕大部分女生拒絕男生表白后都希望做朋友,這是什么心態(tài)?

A:跟你客氣一下啊,要不還能說(shuō)什么,“我們不合適,我們還是做仇人吧”

90

Q:如何用歌詞表白?

A:總想對(duì)你表白,我的心情是多么豪邁。

91

Q:表白被拒絕時(shí)你在想什么?

A:不愧是我看上的妹子,眼光果然不錯(cuò)~

92

Q:有個(gè)女生幫了我的忙,我想感謝她但不希望她男友誤會(huì),我該怎么做?

A:你可以給她送個(gè)錦旗。。。

程序員為什么會(huì)沒(méi)有女朋友?掃描下方二維碼,關(guān)注51CTO技術(shù)棧公眾號(hào)。歡迎在技術(shù)棧微信公眾號(hào)留言探討。小編將精選出最有價(jià)值的三條評(píng)論,分別獲得 50、30、20 元 的 紅 包 獎(jiǎng) 勵(lì),活動(dòng)截止時(shí)間 11 月 16 號(hào) 12 時(shí)整。

責(zé)任編輯:武曉燕 來(lái)源: Python與數(shù)據(jù)分析
相關(guān)推薦

2018-11-15 15:49:33

架構(gòu)技術(shù)棧微信半月刊

2019-07-29 08:22:59

程序員格子衫代碼

2015-08-17 09:44:30

reactivecocios框架實(shí)用

2020-02-19 08:08:24

Nginx功能

2020-05-25 08:05:11

KafkaActiveMQRabbitMQ

2020-01-13 12:30:40

服務(wù)器開(kāi)發(fā) 架構(gòu)

2014-09-29 16:17:05

易信免費(fèi)通話

2014-10-21 13:13:30

SSL中間人攻擊中間人攻擊Yahoo

2017-02-17 14:12:21

存儲(chǔ)閃存顆粒固態(tài)硬盤(pán)

2018-08-01 14:33:56

微信小游戲小程序

2018-08-27 15:57:54

技術(shù)短視頻碎片化

2018-04-06 09:37:49

2020-08-17 08:39:12

VSCode開(kāi)發(fā)工具

2019-10-11 20:15:43

LEGION Y900

2020-08-04 07:45:52

Linux系統(tǒng)游戲

2015-02-26 13:43:18

微信支付寶紅包

2023-03-24 10:59:21

模型開(kāi)源

2022-06-30 08:37:40

VSCodePython

2022-03-21 09:32:03

AI游戲代碼

2020-01-27 15:44:54

Python拜年
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)