爬取我校oj的题目以及作答情况

   昨晚深夜上久违的oj刷刷题,在打开网站时就萌生了爬取我校oj网站的题目以及同学们的作答情况的想法。

一,以下是我分析的过程:

  

已进入网站打开源码发现:这果然是被js渲染过的网站,并不能从查看网页源码分析下手,于是就只能打开开发者工具分析。

首先我进入第一道题目,观察url是否有规律可循,经过比较发现url确实有规律可循,具体规律为:

http://oj.dgut.edu.cn/problem/+题号  ,可是问题来了,当我打开题目的网页源代码的时候,发现也是被js渲染过的,所以进入开发者工具查看真实的请求地址,经验告诉我,被js渲染过的网页一般真正的url藏在xhr页面中,于是我去逐个逐个找,终于找到了



然后我再比较其他题目看看是否路径有规律可寻,结果发现确实有规律可寻,具体规律为:http://oj.dgut.edu.cn/api/xproblem/+题号。接着我就制定爬虫策略,该爬些什么信息,经过一轮的思考后我决定爬取的为:题目,难度,内容,输入,输出,作答情况,并且将信息存进sqlite数据库中

于是我就开始写爬虫脚本了,经过一轮的编写和调试,脚本终于完成了。具体代码如下:


实战成果:


写爬虫过程中遇到的坑和解决办法:

   我在分析的过程中发现最后一个题目的题号为1151,可是实际的题目数量就只有500多道题,意味着其中有些题号是空的,所以这此得要做出判断,判断当请求url时返回得结果是不是not found,不是得话就开始采集信息。具体操作在代码中以作解释。

你可能感兴趣的:(爬取我校oj的题目以及作答情况)