用 Python 爬取知乎大学话题热门高赞问答

Posted by Python小二 on 2020-04-26

你的大学生活过得怎么样?充实?有趣?有遗憾?本文我们使用 Python 爬取知乎上大学相关话题中的热门高赞问答,看看是否有你熟悉的场景。

爬取

首先,我们到知乎上搜一些大学相关话题中热度比较高的几个,如下图所示:

这个我们通过话题的关注人数、问题数量、精华内容等方面判断,接着我们用鼠标选中一个话题点进去,如下图所示:

我们要记录一下网址中的话题 ID,就是网址中 topic 后面那一串数字,这个在爬取时要用到。

接下来我们看一下爬取的实现,我们先导入需要用到的 Python 库,如下所示:

1
2
import re, json, random, requests, urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

爬取问答内容的具体实现代码如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
def get_answers_by_page(topic_id, page_no):
    global db, answer_ids, maxnum
    limit = 10
    offset = page_no * limit
    url = "https://www.zhihu.com/api/v4/topics/" + str(
        topic_id) + "/feeds/essence?include=data%5B%3F(target.type%3Dtopic_sticky_module)%5D.target.data%5B%3F(target.type%3Danswer)%5D.target.content%2Crelationship.is_authorized%2Cis_author%2Cvoting%2Cis_thanked%2Cis_nothelp%3Bdata%5B%3F(target.type%3Dtopic_sticky_module)%5D.target.data%5B%3F(target.type%3Danswer)%5D.target.is_normal%2Ccomment_count%2Cvoteup_count%2Ccontent%2Crelevant_info%2Cexcerpt.author.badge%5B%3F(type%3Dbest_answerer)%5D.topics%3Bdata%5B%3F(target.type%3Dtopic_sticky_module)%5D.target.data%5B%3F(target.type%3Darticle)%5D.target.content%2Cvoteup_count%2Ccomment_count%2Cvoting%2Cauthor.badge%5B%3F(type%3Dbest_answerer)%5D.topics%3Bdata%5B%3F(target.type%3Dtopic_sticky_module)%5D.target.data%5B%3F(target.type%3Dpeople)%5D.target.answer_count%2Carticles_count%2Cgender%2Cfollower_count%2Cis_followed%2Cis_following%2Cbadge%5B%3F(type%3Dbest_answerer)%5D.topics%3Bdata%5B%3F(target.type%3Danswer)%5D.target.annotation_detail%2Ccontent%2Crelationship.is_authorized%2Cis_author%2Cvoting%2Cis_thanked%2Cis_nothelp%3Bdata%5B%3F(target.type%3Danswer)%5D.target.author.badge%5B%3F(type%3Dbest_answerer)%5D.topics%3Bdata%5B%3F(target.type%3Darticle)%5D.target.annotation_detail%2Ccontent%2Cauthor.badge%5B%3F(type%3Dbest_answerer)%5D.topics%3Bdata%5B%3F(target.type%3Dquestion)%5D.target.annotation_detail%2Ccomment_count&limit=" + str(
        limit) + "&offset=" + str(offset)
    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",
    }
    try:
        r = requests.get(url, verify=False, headers=headers)
    except requests.exceptions.ConnectionError:
        return False
    content = r.content.decode("utf-8")
    data = json.loads(content)
    is_end = data["paging"]["is_end"]
    items = data["data"]
    if len(items) <= 0:
        return True
    pre = re.compile(">(.*?)<")
    for item in items:
        if maxnum <= 0:
            return True
        answer_id = item["target"]["id"]
        if answer_id in answer_ids:
            continue
        if item["target"]["type"] != "answer":
            continue
        if int(item["target"]["voteup_count"]) < 10000:
            continue
        answer = ''.join(pre.findall(item["target"]["content"].replace("\n", "").replace( " " , "")))
        if len(answer) == 0:
            continue
        if len(answer) > 200:
            continue
        answer_ids.append(answer_id)
        question = item["target"]["question"]["title"].replace("\n", "")
        vote_num = item["target"]["voteup_count"]
        if answer.find("<") > -1 and answer.find(">") > -1:
            pass
        sline = "=" * 50
        content = sline + "\nQ: {}\nA: {}\nvote: {}\n".format(question, answer, vote_num)
        print(content)
        save2file(content)
        maxnum -= 1
    return is_end

展示

下面来看一下我们爬取的热门高赞问答的具体内容。

Q: 你有什么相见恨晚的知识想推荐给年轻人?

A: 做你害怕做的事情。然后你会发现,不过如此。

Q: 你大学时最美好的一个瞬间是什么?

A: 那天真的是好饿啊。舍长带了一份饭回来,说是给老高打的,他没在,问我吃不吃。然后很随意的走了。半个小时后,老高带了一份饭回来,说是水龙头要的…那天三个舍友都用了一个烂借口,我连着吃了三份饭。

Q: 考研复试中,有哪些令人窒息的问题?

A: 同学是河南人,复试上海某大学。面试的时候,有一个导师问:“同学你是河南人吧,你们那里的学生会私拿实验室里的东西吗?”我同学当场怼回去了。“老师你是上海人吧,你是娘娘腔吗?”出来同学就哭了,我们也以为她考不上了,最后她收到了录取通知“。

Q: 大学时期你日思夜想的那个女生她现在怎么样了?

A: 可能现在找了个老实人接盘了吧,大三时做过某连锁酒店前台,周五晚上第一天上班,在前台学习业务,就遇到她和一男的开房。后来从带我的姐姐那得知,她是熟客了,还和不同的男人……从此,我的世界里,没有“女神”这个概念。

Q: 大学比高三还累吗?

A: 你以为的大学生活是:吃饭睡觉看电影游戏逛街谈恋爱逃课赖床代签到。但实际上的大学生活是:大英思政计算机高数绘图C语言熬夜挂科赶作业网课讲座吃狗粮…大一的我现在想要回高三…

Q: 大学生文身正常吗?

A: 纹一花臂麒麟臂小龙虾基本都会被国人所鄙视。但你要在胸口纹一个为人民服务后背来一个镰刀五角星,那档次立马就上去了。想在手上纹,纹一个愿母亲永远平安健康。谁瞅见了都会说你是一个大孝子。纹身是一个彰显个性的行为,但相信我,在我国的文化氛围下,纹大花臂的往往结果会让周围的人认为你很傻逼。所以问题来了,如果你很有个性,何必在乎周围的人认为你是个傻逼,如果你在乎周围的人怎么看你,又为什么要去纹身?

Q: 毕业照要怎么拍才好看?

A: 相信我,四十年后,这会是放在你案头回忆青春岁月的那张照片。你拍的那些花里胡哨的照片最终会被你的孙子嘲笑土爆了,但这张照片不会。

Q: 如何评价有的大学生偷外卖的行为?

A: 首先说明做这件事的人不是我,这时候就不得不请出我校的大佬了,真实行动力的化身,去翻垃圾桶找袋子最终找到了证据最后小偷认错,买了二十份外卖放在楼下让人随便吃真实大快人心。

Q: 一个拿国家助学金的贫困生,买七八千的中端单反错了吗?

A: 贫困生就不能用助学金买iphone,买奢侈品,买单反。想买?自己毕业后,自己赚钱买去,凭什么用助学金去实现你们的奢侈梦?搞清楚,这是助学金,这是用来让贫困生维持学业的。这个资金有限,很多贫困生拿不到这个钱,甚至因此影响了学业。这不是给贫困生的梦想金,奢侈金,消耗品。如果一部分贫困生,打着梦想的口号,占用了其他同样贫困的学生,维持学业的机会。

Q: 在校大学生倡议安装空调却被某网站网友批判,合理吗?

A: 所以,这些期待下一代人跟自己一样受苦的人,对社会肯定没有多少贡献。正是因为社会的进步里没有他们的贡献,他们才可以如此轻松地说话。怎么区分苦难和考验?让一个人得不到社会普遍拥有的东西,叫苦难;让一个人得不到社会普遍需要奋斗才能得到的东西,叫考验。

Q: 你在大学时期,遇到过最可怕的瞬间是什么?

A: 我坐起来面对着墙,怎么也找不到出口。

Q: 你初上大学时带过哪些奇葩的东西?

A: 就在刚刚,我正在收拾东西,奶奶拿了这个给我,说开学发的暖壶是新的,壶塞的味儿老长时间消不掉,给你从家拿个旧的瞬间眼泪在眼眶打转,得是什么样的爱才能连个暖壶塞子都替你想到。

Q: 你在大学有过哪些骚操作?

A: 本人女,大学在南京念的。南京那地方大家都知道,著名的火炉,夏天真是热得恨不得把皮都剥了,男生还可以光膀子,女生不行啊,不过在宿舍里没那么多讲究,我们经常就上身一个小吊带,下身一条小短裤,就遮着三个点,我们的开水炉在宿舍楼过道里,早先附近没别的宿舍楼,大家都是女生,经常就吊带短裤的出来打开水,那叫一个春光无限。后来突然对面新盖了宿舍楼!还是男生宿舍!据说可以看得见我们的过道!

Q: 老师教过你最奇葩的知识有哪些?

A: 有一天不知讲什么,讲着讲着就讲到毒品是怎么做的。他讲的特别详细,从头到尾的讲,可惜我都听不懂。我们几个男生就起哄,老师你这么熟悉干嘛不去做毒品,比做老师挣的钱多的多了。他就笑了一下,说:人生而在世,当为君子。爱财,要取之有道。你们有些人乖巧,有些人顽皮,在我眼里,都是孩子。就算有些涂鸦,也都是可用擦掉的铅笔画。我选择当老师,就是想做一块橡皮。

Q: 如何看待早起却不叫你的室友?

A: 我有什么义务每天喊我的室友起床?定个闹钟很难吗?如果前一天晚上你和我说,哎!明儿早麻烦叫一声,怕起不来误了事儿。那我会欣然答应。但如果觉得叫你起床是理所当然的,不叫还不乐意了,那抱歉,你就一直睡着吧,我又不是托儿所的。我的室友们是不会提这样的要求的,我们的上课时间不一样。

Q: 大学宿舍里有个废人是怎样的体验?

A: 大学寝室有个哥们儿,基本不去上课,大家都以为他废了,结果这货几乎没挂过科。4级600,6级500多一把过。有一学期他痛定思痛,上了半个学期概率论,后半个学期买了ps4就不去了,考前突击3个晚上直接年级前十,以前经常教育他好好学习直接自闭了…

Q: 什么时候你突然觉得大学一个人更好?

A: 当你走进图书馆,找到窗户边的位置,桌边放一杯温水,打开书,一边学习一边做笔记的时候。不用在意旁边的伙伴是不是问你借充电线,不用在意朋友饿了陪她一起吃饭,只需要关注自己的需要。走出图书馆,看到云彩跟夕阳,这样的心情你可以一个人慢慢感受。

Q: 你知道哪些让人捧腹的大学生活趣事?

A: 想起冬天洗完澡,要涂身体乳,但是背部不好涂,于是就让室友给我涂~裸着背部的……她揉的我很舒服,涂完身体乳还给我按摩了,我一声娇啼,说:用点力,嗯,啊,哦……阿姨进来查房,看了我们一眼,默默地把门关上了……阿姨,你别走,你听我说……

Q: 是否存在大学里家境略差的人嘲讽家境比他好的人这种现象?

A: 另一个室友家境略困难,一天到晚四处说公子哥装逼,炫富。后来越看越觉得恶心,不请他吃饭就觉得别人看不起他,请吃饭就觉得别人装逼。还有就是,那个穷孩子因为对方买了双1000多阿迪达斯的鞋,私下里嘲讽了一个多月。而对他其他牌子不闻不问,说实话,那些名牌我也不认识,只知道很贵吧。

Q: 毕业生各种煽情,感情真的那么深吗?

A: 对原有旧生活消逝的眷恋。对未知新生活来临的恐惧。群体性行为的感染和放大。仪式感的自我暗示与宣泄。至于同学情谊深不深,几年后参加个同学会就知道答案了。

Q: 大学没有独卫,如何每晚洗屁屁?

A: 我妈从小到大就告诉我不洗澡的话要洗屁股和脚,所以某一天的晚上当我拿着脚盆躲在阳台洗屁股的时候,当我沉浸在屁股每一寸皮肤随着热水荡漾,我的菊花在在自由的呼吸,开放。我舍友突然推门过来,四目相对,沉默,大写的沉默,沉默是上单给辅助单杀的时刻。他问我:“你为什么在脚盆里拉屎?”自此,我的菊花没有在大学盛开过。

Q: 英语四级能弃考吗?

A: 能!绝对可以!只要胆子大!莫得人管!在别人坐在四级考场上的时候,你可以戴上耳机,穿上你最炫的鞋,踏着华丽舞步,哼着小曲,拿着你心爱的篮球走上操场。不过话说回来,钱都交了为什么要弃考呢?当然了不管四级弃不弃考,为了毕业你还是要过的明天要考六级了,好慌。当然辽,四级还是不难的,去考考总没坏处,万一过了呢?赞我的人,四六级都稳过!我要给大家补一个六级翻译题了!

Q: 大学舍友给你上过什么课?

A: 大二舞蹈课,看到一女同学脖子上都是暗红色块状痕迹。嘴贱问了句是不是嗓子疼去刮痧了。女同学羞涩的说是跟对象闹着玩弄的我说哦,心理纳闷闹着玩下这狠手啊。室友估计看出了我的困惑,回寝室告诉我那是吻痕,我他么又困惑了,吻一下怎么就紫了呢。就在这时,我那室友一声不吭捞起我的手臂,不顾我惊恐的目光在手腕上种了个…至今没有男朋友,研究生毕业已一年~

Q: 国内哪所大学宿舍环境比较差?

A: 别问,问就是厕所装修了,空调装起来了,人员调动空间变大了,欢迎大家报考西南医科大学!

Q: 天天来图书馆学习都要化妆的女生是什么心态?

A: 因为她们都是一群做作的婊婊,她们就是在装模作样,她们去图书馆根本就不是为了学习就是去撩小哥哥的,怎么样爽不爽你是不是就是想听这些,自己天天去图书馆就是为了看女生化没化妆还好意思来这里叨逼叨,你又是什么拿耗子的心态。

Q: 室友哪些行为让全宿舍人笑到爆炸?

A: 某室友,大一上学期期末,人体解剖学考试前夕,复习不进去,但是又不想紧张的玩手机,于是…没错,头悬梁!!!另一个室友,有一次,院里举办活动,搞了辆小三轮车。男生推着三轮车,我室友非要坐上去,男生无奈,好吧,那你上来吧,过了一会,突然一声巨响!男生使了吃奶的劲也没按下去(͡°͜ʖ͡°)✧

Q: 你和导师之间发生过哪些有趣的事?

A: 老师:“不行不行,你去找x老师,他也是我的老师。”我:“为啥啊……我不能读你的研……”老师憋了好久,“你本科的时候我就喜欢你,你读了x老师的研就算我师妹了。不是师生关系我就能追你了。”……嗯,现在我是x老师的研究生。

Q: 你和导师之间发生过哪些有趣的事?

A: 每次单独跟导师谈论文、签文件,约在办公室时,导师都会不关门;约在家里时,也都是师母在家的时候,师母会到客厅打个招呼,再回房间。近期高校性骚扰事件频频曝光,毕业后也得知了院系很多男教师骚扰女生的恶心事。方才明白导师的分寸和深意。

Q: 给 59 分强行不给过的老师是一种怎么样的存在?

A: 老师也是人,平时看在眼里,期末你59分了,老师会怎么做?没错,老师会这样然而你也知道,事实是什么呢?你平时都是这样的老师看在眼里,堵在心里。所以关键时刻你指望老师拉你一把?老师(๑‾᷆д‾᷇๑):死去吧!哈哈!

Q: 国内有哪些名字野鸡但是不错的大学?

A: 大门那儿就给保安拦着了“同学,请出示本校学生证”“恩(≧∇≦)叔,我不是这个学校的,我来上个课。”保安小哥“那你是那个学校的”我是。。。恩咳咳(润润嗓子)中—央—民—族—大学的,保安小哥“中国民族大学?”我:(。ò∀ó。)中央啊中央,叔保安小哥“:你听听中国人民大学,中国农业大学”的,哪儿来你一个中央的呢?

Q: 如何找到清华或者北大的男朋友?

A: 谁邀请的我?太有眼光了!这问题特别适合我,我交往的男朋友当中,985比率高达100%,清华北大的比率高达66.67%,自认为这方面还有点经验可供参考。对于我这样颜值身材普通的女人,找到清华北大或者其他985大学男朋友的最好方式,就是——自己也考上。

Q: 一个人从自信变为彻底的自卑有多恐怖?

A: 我以前是那么爱出风头的一个人,现在连逆着人群走路的勇气都没有。

Q: 室友哪些不该看的东西被你无意之间看到了?

A: 反向答一波我哪些不该看的东西被室友看到了我的洗衣液和洗衣粉,还有洗发水……被室友看到后就没有了……

Q: 北京大学和清华大学的学生是怎么互损的?

A: 之前在北京听过一个段子:五道口发生一起打架逃逸事件。警方到达时,围观群众表示:打人的是清华的学生!警方:你们怎么确定打人的一定是清华的?围观群众:他跑得贼快,然后径直窜进北大东门了…..

Q: 低学历是否比高学历更加会赚钱?

A: 你看,上过大学,认真学习,懂得统计的基本原理的人,他们能正确取样统计,得出了上大学的人中,更容易出富豪,获得了心理上的幸福感。没上过大学,没好好学习,懂不起统计学的基本原理的人,他们会觉得没读书的人更容易成为富豪,也获得了心理上的幸福感。

Q: TOP 2 大学学生,受不了身边学习好的学生声称自己要挂科结果95 +、考试前一直说自己会挂等怎么办?

A: 被土豪叫土豪,被学霸喊学霸。

Q: 有什么很难看的大学录取通知书吗?

A: 内蒙古大学必须有姓名,都闪开让我来!!!我的最切题!《内蒙古大学研究生录取通知书之来自草原的呼唤》通知书???广告单???劝退单????

Q: 有哪些哄骗了我们学生时代的鸡汤故事?

A: 一个妹纸去一个名企面试,面试结束后,在走廊里看到地上有一张扔掉的纸团,就弯腰捡起来放进了垃圾桶,这一幕被老总看到了,然后录取了…..我觉得真实情况应该是:妹子弯腰捡纸团的时候,老总从衣领处看到妹纸的胸比较大,于是录取了…..

Q: 异性同桌总是做一些莫名其妙的动作怎么办?

A: 不要怕,不要慌张,不要小鹿乱撞。当你发现晚自习你同学突然手舞足蹈,动作扭曲,宛如在跳千手观音,别惊讶,他只是在判断安培力方向和磁感线方向。

Q: 你是如何凭实力单身?

A: 不会撩人,遇到异性生怕别人觉得我对他有非分之想,尽可能的撇清关系,尽全力抹杀一切可能性。从不和异性聊天,别人找我聊天,我第一瞬间的反应是如何终止这场聊天。从不发朋友圈,从不发自拍,生怕我被人想起来。生怕我发了什么话让任何异性误会。我是凭信念单身的,做到我这些,保证你和任何异性都毕恭毕敬。补一条最致命的,当我确定我有好感的异性喜欢我后,我对他瞬间就失去了所有兴趣。

Q: 互相喜欢的人明知不可能有结果,要在一起吗?

A: 如果五分钟后她必须进安检,如果安检在十米之外,那意味着,你们可以亲吻四分五十秒。

欢迎微信搜索 Python小二,第一时间阅读、获取源码,回复关键字 1024 可以免费领取个人整理的各类编程语言学习资料。