爬取我校oj的題目以及作答情況

? ?昨晚深夜上久違的oj刷刷題,在打開網(wǎng)站時就萌生了爬取我校oj網(wǎng)站的題目以及同學(xué)們的作答情況的想法。

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

??

已進入網(wǎng)站打開源碼發(fā)現(xiàn):這果然是被js渲染過的網(wǎng)站,并不能從查看網(wǎng)頁源碼分析下手,于是就只能打開開發(fā)者工具分析。

首先我進入第一道題目,觀察url是否有規(guī)律可循,經(jīng)過比較發(fā)現(xiàn)url確實有規(guī)律可循,具體規(guī)律為:

http://oj.dgut.edu.cn/problem/+題號? ,可是問題來了,當我打開題目的網(wǎng)頁源代碼的時候,發(fā)現(xiàn)也是被js渲染過的,所以進入開發(fā)者工具查看真實的請求地址,經(jīng)驗告訴我,被js渲染過的網(wǎng)頁一般真正的url藏在xhr頁面中,于是我去逐個逐個找,終于找到了



然后我再比較其他題目看看是否路徑有規(guī)律可尋,結(jié)果發(fā)現(xiàn)確實有規(guī)律可尋,具體規(guī)律為:http://oj.dgut.edu.cn/api/xproblem/+題號。接著我就制定爬蟲策略,該爬些什么信息,經(jīng)過一輪的思考后我決定爬取的為:題目,難度,內(nèi)容,輸入,輸出,作答情況,并且將信息存進sqlite數(shù)據(jù)庫中

于是我就開始寫爬蟲腳本了,經(jīng)過一輪的編寫和調(diào)試,腳本終于完成了。具體代碼如下:


實戰(zhàn)成果:


寫爬蟲過程中遇到的坑和解決辦法:

? ?我在分析的過程中發(fā)現(xiàn)最后一個題目的題號為1151,可是實際的題目數(shù)量就只有500多道題,意味著其中有些題號是空的,所以這此得要做出判斷,判斷當請求url時返回得結(jié)果是不是not found,不是得話就開始采集信息。具體操作在代碼中以作解釋。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容