笑死⼈不偿命的知乎沙雕问题排⾏榜
(图⽚来⾃于⽹络)
作者:徐麟,某互联⽹公司数据分析狮,个⼈数据森麟(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 = 'www.zhihu/question/37453271'
js='window.open("'+url+'")'
driver.close()
driver.switch_to_window(driver.window_handles[0])
for i in range(100):
js="var q=document.documentElement.scrollTop=10000000"
all_html = [k.get_property('innerHTML') for k in driver.find_elements_by_class_name('AnswerItem')]
all_text = ''.join(all_html)
#all_text = place('\u002F','/')
all_text = place('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; __ 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 = 'www.zhihu/'+questions[i]
html = (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,各个过百万”的⼈设。
这两个图实际上都是基于⼀个表情,不知道有没有看出来:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论