Python爬取大学相关热门话题,是否有你大学生活的影子呢?

Posted 程序员朱鹏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python爬取大学相关热门话题,是否有你大学生活的影子呢?相关的知识,希望对你有一定的参考价值。

你的大学生活过得怎么样?充实?有趣?有遗憾?

本文我们使用 Python 爬取了大学相关话题中的热门高赞问答,看看是否有你熟悉的场景。

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

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

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

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

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

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

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

爬取方法中的两个参数分别表示话题 ID 以及爬取的内容是第几页。

我们可以将爬取的内容保存到文件中,实现代码如下:

def save2file(content):
    with open('result', 'a', encoding='utf-8') as file:
        file.write(content)

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

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

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

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

「Q」: 互相喜欢的人明知不可能有结果,要在一起吗?
「A」: 如果五分钟后她必须进安检,如果安检在十米之外,那意味着,你们可以亲吻四分五十秒。

这里为大家整理出了Python爬虫的学习资料,有非常适合初学者练习的项目,需要的话可以扫码领取,说不定能帮助到你学习Python呢!

开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系

以上是关于Python爬取大学相关热门话题,是否有你大学生活的影子呢?的主要内容,如果未能解决你的问题,请参考以下文章

Python爬虫——定向爬取“中国大学排名网”

python爬取中国大学排名

python-爬取中国大学排名(第五周)

spark学习进度7-Python爬取大学排名实例

python爬虫爬取最好大学排名

爬取:中国大学排名