python爬虫为您获取知乎有关·【考研】·话题的高赞文章(详解+代码)

首先要感谢知乎的不封之恩~
想直接看爬取结果的朋友欢迎移步:不用再找了,python爬虫为您获取知乎有关·【计算机考研】·的高赞文章

我的初衷

———————————咱不生产经验贴,咱只是经验贴的搬运工————————————
初衷:不久前本人立志加入考研大军,在逛知乎过程中,苦于好的文章过的繁多,令人炫目,于是想尽可能多的汇总有关考研经验的高赞回答
接下来将以知乎的考研数学话题为例,开启我的爬虫之旅

爬虫过程详解

众所周知,爬虫提取数据方式有如下三种:

  • 正则表达式
  • CSS选择器
  • XPath

所以爬知乎用的当然不是这三者当中的任何一种啦~
要想了解如何爬取知乎信息,我们先做如下两个小实验:

  1. 打开知乎的一个topic页面,url:https://www.zhihu.com/topic/19768572
    在这里插入图片描述
    页面采用ajax动态加载,即页面向下滚动时,更多回答才会显示
    浏览器中ctrl+shift+i进入开发者工具,切换到Network网络窗口,页面向下滚动,会看到get请求
    在这里插入图片描述
    单击右键那段乱七八糟的东西,可以复制网址,在新标签中打开,是一段json格式的网页,打开有惊喜哦
    在这里插入图片描述
    也就是说,通过这段乱七八糟的网址,我们可以获取topic中的多个question的一个answer

  2. 再打开知乎的一个question页面,url:https://www.zhihu.com/question/39995908
    在这里插入图片描述

    页面同样采用ajax动态加载,还是熟悉的操作,页面往下拖直到看到
    在这里插入图片描述

    同样在新标签页面中打开,这个场景似曾相识
    在这里插入图片描述
    稍微解读一下:

    • data[1][question][id]: 该问题的id
    • data[1][created_time]: 该回答的创建时间(时间戳的格式,需要转换)
    • data[1][updated_time]: 该回答的更新时间
    • data[1][voteup_count]: 该回答的点赞数(正是我们想要的!)
    • data[1][comment_count]: 该回答的评论数

    一切自然,却不尽然!此刻我们可以通过json格式获取一个question的多个answer
    ——————————————惊人发现—————————————

  • 知乎的考研数学话题下,在精华中有很多高赞问题,进而能查看某个高赞问题高赞回答但我们的野心是获取尽可能多的高赞回答
  • topic页面中可通过https://www.zhihu.com/api/v4/topics/....的json格式网页,得到多个question的answer
  • question页面中可通过https://www.zhihu.com/api/v4/questions/...的json格式网页,得到一个question的多个answer

算法思想

  1. 已知topic的id,打开topic页面,获取精华回答中的每个高赞question的id
  2. 打开question,获取每个高赞answer
    ***注:有的回答是article专栏的形式,因此需要额外处理
    在这里插入图片描述
    算法实现
核心代码有三个文件:
ZhihuTest1: 访问question页面,获取高赞answer,保存结果
ZhihuTest2: 访问topic页面,获取questions_url,
            如果为article,保存结果;
            如果为question,进入ZhihuTest1
ZhihuTest3: 主程序,进入ZhihuTest2,记录了有4个考研相关topic供选 
爬取的数据保存到comments.csv中

另提供.csv文件在线转markdown表格的宝藏网站:http://web.chacuo.net/charsettextmarkdown

爬虫代码地址

https://github.com/Weayer/ZhihuTest

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值