python爬虫为您获取知乎有关考研话题的高赞文章(详解+代码)
首先要感谢知乎的不封之恩~
我的初衷
初衷:不久前本人立志加入考研大军,在逛知乎过程中,苦于好的文章过的繁多,令人炫目,于是想尽可能多的汇总有关考研经验的高赞回答
接下来将以知乎的考研数学
话题为例,开启我的爬虫之旅
爬虫过程详解
众所周知,爬虫提取数据方式有如下三种:
- 正则表达式
- CSS选择器
- XPath
所以爬知乎用的当然==不是==这三者当中的任何一种啦~
要想了解如何爬取知乎信息,我们先做如下两个小实验:
打开知乎的一个topic页面,url:https://www.zhihu.com/topic/19768572
页面采用ajax动态加载,即页面向下滚动时,更多回答才会显示
浏览器中ctrl+shift+i
进入开发者工具,切换到Network网络窗口,页面向下滚动,会看到get请求
单击右键那段乱七八糟的东西,可以复制网址,在新标签中打开,是一段json格式的网页,打开有惊喜哦
也就是说,通过这段乱七八糟的网址,我们可以获取topic中的多个question的一个answer再打开知乎的一个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
算法思想
- 已知topic的id,打开topic页面,获取精华回答中的每个高赞question的id
- 打开question,获取每个高赞answer
***注:有的回答是article专栏的形式,因此需要额外处理
算法实现
1 |
|
另提供.csv文件在线转markdown表格的宝藏网站:http://web.chacuo.net/charsettextmarkdown
爬虫代码地址
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!