• 正能量網

    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,第二個參數表示爬的是第幾頁的內容。

    爬下來的內容當中有幾個需要注意的字段,下圖中用黃框高亮出來了:




    這幾個字段的含義如下:

    • question.title - 問題的標題
    • content - 回答的內容
    • 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}R0: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掉色了

    轉載自頭條號:程序猿山河。(侵刪)

    本站為注冊用戶提供信息存儲空間服務,非“本站編輯上傳提供”的文章/文字均是注冊用戶自主發布上傳,不代表本站觀點,版權歸原作者所有,如有侵權、虛假信息、錯誤信息或任何問題,請及時聯系我們,我們將在第一時間刪除或更正。站長郵箱(190277521@qq.com)本站是非贏利網站,本網站鄭重提醒注冊用戶:請在轉載、上載或者下載有關作品時務必尊重該作品的版權、著作權;如果您發現有您未署名的作品,請立即和我們聯系,我們會在第一時間加上您的署名或作相關處理。 轉載請注明出處:http://www.ks-zhong.com/article/a597445322372733016.html

    分享:
    掃描分享到社交APP
    發表列表
    請登錄后評論...
    游客 游客
    此處應有掌聲~
    評論列表
    x

    注冊

    已經有帳號?
    五月婷婷综合