教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

學(xué)會python有哪些好處?python抓取知乎神回復(fù)

更新時間:2019年02月16日12時36分 來源:python培訓(xùn) 瀏覽次數(shù):

  知乎上經(jīng)常會有很多令人忍俊不禁的神回復(fù),初看之下拍案叫絕,細思之下更是回味無窮。突然靈光一閃,利用在傳智播客培訓(xùn)python的這段時間,也得到不少學(xué)會python的好處,今天做了一個抓取知乎神回復(fù)的小案例。分享代碼如下:
  知乎神回復(fù)都有些什么特點呢?我們先來觀察一下,如下圖:
學(xué)會python的好處
  大家看出什么規(guī)律了么?短小精辟有沒有?贊同很多有沒有?所以爬取知乎神回復(fù)我們只要爬取那些贊同多又字數(shù)少的回答就可以。簡單的兩個步驟就能實現(xiàn),第一步爬取知乎回答,第二部篩選回答。是不是很 easy?爬取知乎回答第一步我們爬取知乎上的回答。知乎上的回答太多了,一下子爬取所有的回答會很費時,我們可以選定幾個話題,爬取這幾個話題里的內(nèi)容。下面的函數(shù)用于爬取某一個指定話題的內(nèi)容:

  defget_answers_by_page(topic_id, page_no):
  offset = page_no *10
  url = # topic_url是這個話題對應(yīng)的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"]
  iflen(items) >0:
  db.answers.insert_many(items)
  db.saved_topics.insert({"topic_id": topic_id,"page_no": page_no})
  returnis_end
  get_answers_by_page 函數(shù)有兩個參數(shù),第一個參數(shù)是話題的 id,第二個參數(shù)表示爬的是第幾頁的內(nèi)容。
  爬下來的內(nèi)容當中有幾個需要注意的字段,下圖中用黃框高亮出來了:
學(xué)會python的好處知乎

  這幾個字段的含義如下:

  question.title:問題的標題。

  content:回答的內(nèi)容。

  voteup_count:贊同的數(shù)量。

  這些字段在下一步篩選回答的時候會用到。

  篩選回答

  爬完數(shù)據(jù)后,我們來篩選一下結(jié)果。我們用 MongoDB 中的聚合管道對回答做篩選。

  關(guān)于 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、字數(shù)小于 50 的回答,篩選出來的結(jié)果就是短小精辟的神回復(fù)。

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

  https://github.com/pythonml/answer

  知乎神回復(fù)

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

 

  1

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

  A://TODO

  2

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

  A:我電腦上運行的好好的啊??

  3

  Q:如何反駁「程序員離開電腦就是廢物」這個觀點?

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

  4

  Q:假如有一天所有的人都使用計算機語言說話,會是怎樣的場景?

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

  5

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

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

  6

  Q:什么是遞歸?

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

  7

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

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

  8

  Q:編程的樂趣是什么?

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

  9

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

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

  10

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

  A:看論文時候一個"顯然"推了我一下午。

  11

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

  A:女朋友。。。

  12

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

  A:拜雍正,專治八阿哥。

  13

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

  A:對,就 4 條路,寫代碼,搞金融,在代碼圈搞金融,在金融圈寫代碼。

  14

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

  A:因為他們沒有別的包。

  15

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

  A:屁話少說,放碼過來。

  16

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

  A:程序員女朋友顏值高,我是服的,因為隨便問十個程序員他的女朋友是誰,有九個回答是新垣結(jié)衣。

  17

  Q:為什么一部分人寧可買幾個機械鍵盤換著用,也不愿意給自己敷一下面膜?

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

  18

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

  A:0 error 0 warning。

  19

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

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

  20

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

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

  21

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

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

  22

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

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

  23

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

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

  24

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

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

  25

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

  A:路過他電腦前時說一句,呦,又在寫 Bug 呢!

  26

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

  A:Java 有項天賦,就是能把中小型軟件寫成大型的。

  27

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

  A:時薪又不高。

  28

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

  A:誰、誰在抱怨工資高?

  29

  Q:單身程序狗解決了一個技術(shù)難題后沒有妹子可以炫耀或夸一下自己怎么辦?

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

  30

  Q:中國程序員是否偏愛「沖鋒衣+牛仔褲+運動鞋」的衣著?如果是,為何會形成這樣的潮流?

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

  31

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

  A:單身。

  32

  Q:為什么我認為程序員似乎大多不善言辭?

  A:你就當是我們情商低就好了,這樣你開心,我們也開心。

  33

  Q:在中國,年齡最大的程序員不過 40 歲左右,請問中國的程序員未來還可以做什么?

  A:這跟為什么 90 后沒人活過 30 歲是同一個原理。

  34

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

  A:hello nerd。

  35

  Q:怎么看出 IT 男喜歡一個女生?

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

  36

  Q:有線鼠標會被無線鼠標取代嗎?

  A:我覺得在網(wǎng)吧有線鼠標就不會被取代。

  37

  Q:同事說自己 C++ 水平全中國第一,怎么讓他意識到自己沒那么厲害?

  A:實不相瞞,我也不是裝逼:我的 C++ 水平全國第 0。

  38

  Q:為什么 iPhone 刪軟件時,所有圖標都要抖?

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

  39

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

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

  40

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

  A:小時候我總覺得過兩年我就能和大我兩歲的哥哥一樣大了。

  41

  Q:知乎給你帶來的最小限度的好處是什么?

  A:消磨時間還不覺得罪惡。

  42

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

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

  43

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

  A:只要工資開的高,叫我阿姨都行。

  44

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

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

  45

  Q:為什么沒有出現(xiàn)無人機自毀式攻擊武器呢?恐怖分子用過嗎?

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

  46

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

  A:操作系統(tǒng)不會允許用戶訪問、修改及刪除核心系統(tǒng)文件,因為這會損壞系統(tǒng),導(dǎo)致運行異常。

  47

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

  A:為什么文豪要為文盲排的榜買單?

  48

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

  A:燒開水。

  49

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

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

  50

  Q:為什么很多人買筆記本打游戲,而不用性能更好的臺式機?

  A:因為買不起房子。。。

  51

  Q:第一次聽好耳機對你帶來的震撼有多大?

  A:第一次聽好耳機不會給人多大震撼,但是當換回普通耳機的時候,震撼就來了。

  52

  Q:Chrome 真的很費電嗎?

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

  53

  Q:MacBook 上安裝 Windows 后的使用體驗如何?

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

  54

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

  A:來個電話全家都響了起來。

  55

  Q:你為什么不買 iPhone X?

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

  56

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

  A:因為他們下載不到 iPhone。

  57

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

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

  58

  Q:你為什么要買移動硬盤?

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

  59

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

  A:瞄準 PC 電源鍵扔過去。

  60

  Q:如何評價 2016 年 9 月 7 日的蘋果發(fā)布會?

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

  61

  Q:如何評價 Internet Explorer?

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

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

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

  62

  Q:爸媽讓我攢錢買房,我卻想買蘋果電腦怎么辦?

  A:你要真能 3 年攢 50 萬的房子,差這 1 萬 7 買個電腦么,大哥?

  63

  Q:有哪些垃圾手機軟件?

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

  64

  Q:一個完整的 PPT 做下來,最讓你頭疼的是什么?

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

  65

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

  A:幫助烏干達的可憐兒童……

  66

  Q:蘋果用戶為什么選擇蘋果?

  A:因為不用蘋果的用戶不是蘋果用戶。

  67

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

  A:范冰冰需要會修電視機嗎?

  68

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

  A:眼鏡,因為瞎。

  69

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

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

  70

  Q:為什么人常會在黑夜里,變得矯情萬分?

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

  71

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

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

  72

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

  A:“去了,但保安沒讓進。”

  73

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

  A:得打個電話,讓對方擁抱變化。

  74

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

  A:穿女裝就好了。

  75

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

  A:winrarsetup.rar。

  76

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

  A:她才沒誤會呢,只是她比較善良。

  77

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

  A:對不起,我是個好人。

  78

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

  A:女人永遠不會明白男人為什么懷疑她跟別的男人的友誼,因為男人太了解男人了!

  79

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

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

  80

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

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

  81

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

  A:兩會的時候可以去逛逛,每個地方牛逼的大叔都在那。

  82

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

  A:因為不僅自己丑,還嫌別人長得丑。

  83

  Q:做備胎是什么感覺?

  A:每一句話都是密碼

  84

  Q:滾床單來不及卸妝怎么辦?

  A:別啊,我要的就是阿凡達。

  85

  Q:男生堅持每天給女生說晚安,持續(xù)一年會怎樣?

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

  86

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

  A:我送你個青蛙,你好歹還我點蝌蚪吧。

  87

  Q:女生的長相重要嗎?

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

  88

  Q:你為什么還單身?

  A:因為單身比較專注,單身使人進步~

  89

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

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

  90

  Q:如何用歌詞表白?

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

  91

  Q:表白被拒絕時你在想什么?

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

  92

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

  A:你可以給她送個錦旗。。。

  

0 分享到:
和我們在線交談!