前言:本人加入了一個不錯的企鵝羣,文章靈感來源也是那裏,883872094羣資料能夠自取前端
第一步咱們爬取知乎上的回答。知乎上的回答太多了,一會兒爬取全部的回答會很費時,咱們能夠選定幾個話題,爬取這幾個話題裏的內容。
下面的函數用於爬取某一個指定話題的內容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
question.title - 問題的標題編程
content - 回答的內容json
voteup_count - 贊同的數量windows
這些字段在下一步篩選回答的時候會用到。瀏覽器
篩選回答iphone
爬完數據後,咱們來篩選一下結果。
咱們用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,你們能夠在公衆號後臺回覆「知乎神回覆」獲取地址。
知乎神回覆
代碼寫完了,咱們來運行下看看。剛好昨天是程序員節,咱們就來篩選一下和程序員有關的神回覆。結果以下,一共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掉色了