知乎笑死人不償命的沙雕問題排行榜!Python 爬取代碼全公開

csdn程序人生 發佈 2020-01-10T18:54:48+00:00

原問題連結:https://www.zhihu.com/question/30914451/森麟小結:你們兩確定不是猴子派來的逗比寫在最後本文主要是通過這些問題圖大家一樂,只有你在看文章的時候笑了,我們的目的就達到了,知乎上實際上還是有很多很有價值的問題,即使是這些「沙雕」的問題

作者 | 徐麟

本文經授權轉載自數據森麟(ID:shujusenlin)

前言

這兩天偶然上網的時候,被知乎上一個名為「玉皇大帝住在平流層還是對流層」的問題吸引,本以為只是小打小鬧,殊不知這個問題卻在知乎上引發了強烈共鳴,瀏覽次數500W+,7000+關注

於是乎就激發了去探索知乎上「沙雕」問題的想法,也參照了shenzhongqiang強哥之前的知乎神回復文章爬了下知乎神回復,笑死人了~,通過Python爬取這些問題的內容,瀏覽次數,關注人數,總結一份權威(搞笑)的「沙雕」問題排行榜

數據來源

知乎非常「貼心」地專門有一個問題可以滿足我們的需求,出人意料的是這個問題居然有243個回答,並且陶飛同學獲得了3W+的贊同

我們從中爬取了所有回答中出現的問題連結,共用400多個問題,其中陶飛就提供了200+,在此向陶飛同學表示感謝,幫助我們構建了「沙雕資料庫」,這部分代碼如下:

import re
import selenium
from selenium import webdriver
import requests
from bs4 import BeautifulSoup
import pandas as pd
import time

driver = webdriver.Chrome
driver.maximize_window

url = 'https://www.zhihu.com/question/37453271'
js='window.open("'+url+'")'
driver.execute_script(js)
driver.close
driver.switch_to_window(driver.window_handles[0])
for i in range(100):
js="var q=document.documentElement.scrollTop=10000000"
driver.execute_script(js)

all_html = [k.get_property('innerHTML') for k in driver.find_elements_by_class_name('AnswerItem')]
all_text = ''.join(all_html)

#all_text = all_text.replace('\u002F','/')
all_text = all_text.replace('questions','question')
pat = 'question/\d+'
questions = list(set([k for k in re.findall(pat,all_text)]))

獲得到了問題的對應的編號後,就可以去各自的頁面獲取各個問題對應的的標題、瀏覽數等信息,如下圖所示:

這部分代碼如下:

header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win32; x32; rv:54.0) Gecko/20100101 Firefox/54.0',
'Connection': 'keep-alive'}
cookies ='v=3; iuuid=1A6E888B4A4B29B16FBA1299108DBE9CDCB327A9713C232B36E4DB4FF222CF03; webp=true; ci=1%2C%E5%8C%97%E4%BA%AC; __guid=26581345.3954606544145667000.1530879049181.8303; _lxsdk_cuid=1646f808301c8-0a4e19f5421593-5d4e211f-100200-1646f808302c8; _lxsdk=1A6E888B4A4B29B16FBA1299108DBE9CDCB327A9713C232B36E4DB4FF222CF03; monitor_count=1; _lxsdk_s=16472ee89ec-de2-f91-ed0%7C%7C5; __mta=189118996.1530879050545.1530936763555.1530937843742.18'
cookie = {}
for line in cookies.split(';'):
name, value = cookies.strip.split('=', 1)
cookie[name] = value

questions_df = pd.DataFrame(columns = ['title','visit','follower','answer','is_open'])

for i in range(len(questions)):
try:
url = 'https://www.zhihu.com/'+questions[i]
html = requests.get(url,cookies=cookie, headers=header).content
bsObj = BeautifulSoup(html.decode('utf-8'),"html.parser")
text = str(bsObj)
title = bsObj.find('h1',attrs={'class':'QuestionHeader-title'}).text
visit = int(re.findall('"visitCount":\d+',text)[0].replace('"visitCount":',''))
follower = int(re.findall('"followerCount":\d+',text)[0].replace('"followerCount":',''))
answer = int(re.findall('"answerCount":\d+',text)[0].replace('"answerCount":',''))
is_open = int(len(re.findall('問題已關閉',text))==0)
questions_df = questions_df.append({'title':title,'visit':visit,
'follower':follower,'answer':answer,
'is_open':is_open},ignore_index=True)
time.sleep(2)
print(i)
except:
print('錯誤'+str(i))

數據分析

在分享出最終的「沙雕排行榜」前,我們首先嚴肅認真(lixinggongshi)的進行一波分析,主要看一下問題中的關鍵詞,首先是所有詞雲的詞云:

看來這些問題大多是源自於大家對於人生的探索,否則「為什麼」,「如果」,「怎麼辦」也不會出現那麼多,出人意料的是「體驗」這個知乎專屬tag居然並不多,可能是出於對知乎的尊重,和「體驗」相關的問題都不會問得那麼「沙雕」。

下面把這些助詞去掉,再來看下結果:

這個圖看來,讀者關注的問題還是很極端,一方面在關注男女朋友「你冷酷、你無情、你無理取鬧」這種問題,另一方面卻在關注宇宙、地球這種關乎全人類的問題,很符合知乎「人均985,各個過百萬」的人設。

這兩個圖實際上都是基於一個表情,不知道有沒有看出來:

好吧,其實看不出來才是正常,能看出來的可能現在去知乎提個問題,下期就會上榜

,最後把部分問題做出詞云:

不知道大家能不能看清,說實話我自己是看不清的,也沒準備讓大家看清

,目的就是引出下面真正的排行榜

沙雕問題排行榜

通過綜合問題觀看數,關注數,回答數,關注占比,回答占比,綜合得到分數的流量指數和新奇指數,最終獲得一個整體的分數,如下圖所示:

聽起來是不是很複雜,實際上最終還是通過90%10%的數據+10%90%的主觀來進行了排名,為大家精選了15個最為「沙雕」的問題,後台回復「沙雕」可以獲取更多問題,也選取部分網友的回答,問問題的操作誠然很風騷,面對這些「沙雕」問題,認真回答的絕對是風騷PLUS,特此聲明,以下回答來自於知乎網友:

TOP 15

Q:李白寫那麼多詩,他自己都會背嗎?

原問題連結:

https://www.zhihu.com/question/276876453

森麟小結:寫自己的詩,讓別人去背吧,真乃人生最高境界

TOP 14

Q:豬八戒是黑豬還是白豬?

原問題連結:

https://www.zhihu.com/question/37160000

森麟小結:後經多方考證,證明了豬八戒的黑豬身份,這下子身價進一步暴增,對此我們表示:黑豬白豬,不漲價的豬就是好豬

TOP 13

Q:鄒市明能一拳把自己打暈嗎?

原問題連結:

https://www.zhihu.com/question/36805199

森麟小結:知乎上各種關於鄒市明能打多少人的問題層出不窮,沒想到最終還是要向自己動手了

TOP 12

Q:生蚝煮熟了還可以叫生蚝麼?

原問題連結:

https://www.zhihu.com/question/25016659

森麟小結:這個問題就好比有些叫帥帥的人,無論長成什麼樣,別人都要叫他帥帥

TOP 11

Q:被袋鼠暴打是一種怎樣的體驗?

原問題連結:

https://www.zhihu.com/question/27387052

森麟小結:珍愛生命,遠離袋鼠,切莫為了一個高贊回答去和袋鼠親身肉搏,否則可能還沒來得及分享「剛編出來的故事」就……

TOP 10

Q:禿頂的人洗頭,應該用洗髮水還是洗面奶?

原問題連結:

https://www.zhihu.com/question/48119206

森麟小結:希望廣大程式設計師朋友保護好頭髮,不要有朝一日被邀請回答這個問題

TOP 9

Q:如果地球上所有人同時用雷射筆指著月亮,月亮會不會變顏色?

原問題連結:

https://www.zhihu.com/question/48119206

森麟小結:會不會變色無從考究,但是在月亮變色前,我的眼睛一定會先被閃瞎

TOP 8

Q:玉皇大帝住在平流層還是對流層?

原問題連結:

https://www.zhihu.com/question/304133742/

森麟小結:這個問題應該就是「一本正經的胡說八道」集大成者,評論區好多相關領域人士進行了認真解答,不過究竟住哪也沒搞明白,可能只能只有孫悟空知道答案了

TOP 7

Q:把一個變色龍綁在不斷變換顏色的燈上,它會不會心力交瘁而死?

原問題連結:

https://www.zhihu.com/question/32052499

森麟小結:變色龍屬於國家級保護動物,很可能還沒看到結果,先被帶走接受教育

TOP 6

Q:如果把皮卡丘的耳朵塞到插座里,皮卡丘會被電死麼?

原問題連結:

https://www.zhihu.com/question/52083864

森麟小結:皮卡丘會不會被電死不好說,但是你會不會被電死還是很清楚的

TOP 5

Q:西瓜除了被吃還有什麼生存意義?

原問題連結:

https://www.zhihu.com/question/24393996

森麟小結:提問之前最好先想想自己除了吃,還有什麼生存意義?

TOP 4

Q:為什麼外國超級英雄趴著飛,而中國神仙豎著飛?

原問題連結:

https://www.zhihu.com/question/26992616

森麟小結:這是怎樣的神仙讀者,居然問出了這種「驚天地,泣鬼神」的問題,想必各路神仙也在躍躍欲試,準備拉他過去現場講解

TOP 3

Q:向日葵晚上在幹嘛,跟著月亮嗎?

原問題連結:

https://www.zhihu.com/question/21370688/

森麟小結:自產自銷,果然夠厲害,而且不要用人類「996」的思想去要求向日葵,人家太陽落山就下班了,不多說了,已淚崩

TOP 2

Q:蒼蠅被搭載到另一個城市怎麼辦?它的家人孩子怎麼辦?

原問題連結:

https://www.zhihu.com/question/20831390/

森麟小結:這位朋友為了蒼蠅的生活操碎了心,不如把讓他們大家族都在自己的家裡生活,實現大團圓的美好結局

TOP 1

Q:女朋友生氣心煩的時候愛爬樹怎麼辦?

原問題連結:

https://www.zhihu.com/question/30914451/

森麟小結:你們兩確定不是猴子派來的逗比

寫在最後

本文主要是通過這些問題圖大家一樂,只有你在看文章的時候笑了,我們的目的就達到了,知乎上實際上還是有很多很有價值的問題,即使是這些「沙雕」的問題,也有些非常有意思的回答,大家可以多去了解了解,開拓視野。

關鍵字: