查看原文
其他

知乎凡尔赛沙雕语录,究竟有多沙雕?

小一 小一的学习笔记 2023-01-01

关注+星标,听说他有点东西

全文共1759字,阅读全文需10分钟



大家好,我是小一

前一阵子,凡尔赛文学突然爆火网络,特别是在知乎上竟然出现了大量的凡尔赛语录

随便点进一个问题一看,确实一张口就是老凡学家了,够沙雕

有的问题回答甚至有好几百,关注和浏览量都还挺高的。

突发奇想

要不?把这些回答爬下来,分析一下【凡学家们】究竟有多沙雕?


凡尔赛问题定位

首先,在知乎搜索【凡尔赛语录】,发现有几个相关问题

其中第二个和我们要的结果比较相似

点进去后可以发现这其实是个回答,关于这个提问共有 225 个回答。

可以看到当前网址是下面这个

https://www.zhihu.com/question/429548386/answer/1575062220

去掉 answer 以及后面的部分就是这个问题的网址,这个网址我们会在后面的爬虫中用到。

特别是后面的一串数字是问题 id,作为知乎问题的唯一标识。

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


爬取问题回答

研究一下上面的网址,我们发现需要爬取两部分数据:

一部分是问题的详情,包括创建时间、关注人数、浏览量、问题描述等。

一部分是问题的回答,包括每个答主的用户名、粉丝数等信息,问题回答的具体内容、发布时间、评论数、点赞数等信息。


其中,问题详情可以直接爬取上面的网址,通过 bs4 解析页面内容拿到数据

问题的回答则需要通过下面的链接,通过设置每页的起始下标和页面内容偏移量确定,有点类似于分页内容的爬取。

def init_url(question_id, limit, offset):
    base_url_start = "https://www.zhihu.com/api/v4/questions/"
    base_url_end = "/answers?include=data%5B%2A%5D.is_normal%2Cadmin_closed_comment%2Creward_info%2Cis_collapsed%2Cannotation_action%2Cannotation_detail%2Ccollapse_reason%2Cis_sticky%2Ccollapsed_by%2Csuggest_edit%2Ccomment_count%2Ccan_comment%2Ccontent%2Ceditable_content%2Cvoteup_count%2Creshipment_settings%2Ccomment_permission%2Ccreated_time%2Cupdated_time%2Creview_info%2Crelevant_info%2Cquestion%2Cexcerpt%2Crelationship.is_authorized%2Cis_author%2Cvoting%2Cis_thanked%2Cis_nothelp%2Cis_labeled%2Cis_recognized%2Cpaid_info%2Cpaid_info_content%3Bdata%5B%2A%5D.mark_infos%5B%2A%5D.url%3Bdata%5B%2A%5D.author.follower_count%2Cbadge%5B%2A%5D.topics&limit={0}&offset={1}".format(limit, offset)

    return base_url_start + question_id + base_url_end

【左右滑动查看更多】

设置每页回答数 limit=20,offset 则可以是0、20、40...

而 question_id 则是上面提到的网址后面的一串数字,这里是 429548386

逻辑想明白之后就是通过写爬虫获取数据了,文末有完整的爬虫代码获取方式,运行的时候你只需要修改问题的 id 即可。

由于篇幅问题,这里只贴主要的代码:

if __name__ == '__main__':
    question_id = '429548386'
    url = "https://www.zhihu.com/question/" + question_id
    """获取问题的详细描述"""
    title, question, follower, watched, answer_count, tag_list = get_question_base_info(url)
    print("问题url:"+ url)
    print("问题标题:" + title)
    print("问题描述:" + question)
    print("该问题被定义的标签为:" + '、'.join(tag_list))
    print("该问题关注人数:{0},已经被 {1} 人浏览过".format(follower, watched))
    print("截止 {},该问题有 {} 个回答".format(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), answer_count))

    """获取问题的回答数据"""
    # 构造url
    limit, offset = 200
    page_cnt = int(answer_count/limit) + 1
    answer_data = pd.DataFrame()
    for page_index in range(page_cnt):
        answer_url = init_url(question_id, limit, offset+page_index*limit)
        # 获取数据
        data_per_page = get_answer_info(answer_url, page_index)
        answer_data = answer_data.append(data_per_page)
        sleep(3)

    answer_data.to_csv('凡尔赛沙雕语录_{0}.csv'.format(question_id), encoding='utf-8', index=False)
【左右滑动查看更多】

爬虫运行截图如下:

最终,该问题现有的 225 条回答都已经成功爬到


分析回答数据

每个答主都有自己的粉丝,粉丝多的答主应该回答质量比较高,才会受到大家的广泛关注。那,像这种沙雕语录他们也有涉及吗?

先来看一下粉丝数和赞同数的关系

可以发现,粉丝数多的答主的问题回答赞同数不一定高,反倒是粉丝数少的答主回答更沙雕些,广受大家认可。


那,赞同数多的回答评论数应该也不少,毕竟大家都会前排吃瓜,围观沙雕

果然,问题回答的赞同数和评论数基本呈线性分布


基于常识,越早的问题回答应该越容易受到关注,会吸引一大波吃瓜群众前来围观,时间越往后可能热度就过去了,也就少有人关注了。

看一下分布图:

可以看到,这个话题的关注度持续时间比较久,甚至十天后还有近千赞的回答产生,相比微博的热搜知乎热搜似乎持续时间更久一些。



最后,一起欣赏一下新时代的凡尔赛沙雕语录

0 1

说出来挺不好意思的,我是最近才知道鸡蛋有壳的

以前都是吃管家剥好的,一直以为鸡蛋都是白色的软软的


0 2

好烦,睡过了马尔代夫的航班

只能专机去了




0 3

今天,我的姐妹说要开跑车来接我下班

我说不要,打工人怎么能用跑车下班?

家里已经帮我包了一辆公车了,年卡,随我刷


0 4 

打工可能会少活十年

不打工我一天也活不了


0 5 

早晨,我把“早安,打工人”发给了数位好友

无一人回复

后来我才意识到

“打工的只有我一个”



0 6

雇主让我早点去安空调我说:“就不能晚点安吗?”
他说:“不能,打工人就是要早安!”


0 7

只要我足够的努力 老板就能过上更好的生活





写在后面的话

本节语录+图片均来源于网络,侵权可以后台联系小一删除。

本节相关的爬虫代码已经整理完毕,公众号 后台回复【凡尔赛】 获取源码。


我是小一,坚持向暮光所走的人,终将成为耀眼的存在!

期待你的三连我们下节见

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存