能否實現爬蟲爬取OJ代碼?
12-28
因昨天裝雙系統時,不小心ubuntu全盤覆蓋安裝了,所以我電腦里windows的東西都沒了,我在oj交完題目之後會有存代碼和存題目的習慣,不知道能不能寫個程序能夠把我交過的AC代碼,爬下來,並且按照文件夾將代碼和題目網頁文件存下來。有沒有大神干過這事呢?有沒有現成的程序啊。真心累啊。。。
可以的
這裡有個曲折的故事。
某場tc前,我打算去打一下(很突然,因為不太打tc),然後開始配置客戶端嘛,就是幾個插件,其中有個讓我填存生成的html和cpp的位置,我填了~/code/tc,然後測試發現插件幫我在我的~目錄下新建了一個~,oh,愚蠢,我就打算刪掉它。於是我在終端下輸入了。。。rm -rf ~。感天動地,然後就刪除某些文件的時候提醒我許可權不夠。於是。。。我突然反應過來我幹了件蠢事,立馬ctrl-c了。
oh,順理成章的我刷題代碼也沒了。我就想著找回來啊(其實感覺存在本地也沒啥用)。
然後就大概去寫了抓取幾個oj我自己賬號AC代碼的代碼。大概有(hdu,poj和我們學校自己的noj吧)。
其實講這麼多有點偏題。
總結一下就是講道理是可以的。
UnknownCUnknown/ForOJsMyCode: 抓取各個oj上自己的代碼
(感覺貼出自己的代碼好慌啊,逃。
肯定是可以的,用shell腳本就可以。
關鍵是你在哪個系統的帳號,AC了多少題?
數量夠多才值得一寫。
可以。
我寫了一個自動爬取vjudge的代碼的Python腳本,我使用的方法就是模擬POST加正則匹配。。。
代碼不超過50行。。。
hdoj管理員來回答一發吧。。。雖然題主沒有說是哪個oj,但據我比較狹隘的了解,相比微博或是淘寶的用戶登錄,oj的登錄比較簡單,一般模擬登錄post一下用戶名和密碼,拿到cookie就好了,然後就可以愉快地獲取自己的ac代碼啦。
關於反爬蟲嘛,大家只要不影響oj的正常訪問和評測,一般我們也不會特別去禁止的,本身寫寫爬蟲是很好的學習行為,不影響別人就好。
我已知範圍內的 OJ 都沒有嚴格意義上的反爬蟲
…
可以使用 Chrome + Python 輕鬆做出爬蟲
…
你先說哪個 OJ 嘛。
當然可以。我針對hdu使用c++語言實現了一個。
可以去我的博客 http://blog.csdn.net/nk_test.
搜索 acm刷題神器
我記得oj一般都是可以打包下載自己的代碼的
but
leetcode沒有
拿java擼了一個 https://github.com/gitzhou/fetch-leetcode-submission
大神輕拍…
效果可以看這裡 GitHub - gitzhou/leetcode-oj-submissions: My AC Submissions of LeetCode OJ.
當然是可以的 我和我的小夥伴在自學C#和Python的時候各自寫了一個OJ代碼提交和查看器 交上題之後還能檢測賬戶信息來反饋交題結果 查看之前交過的代碼只是附加功能 但是我們只在自己學校的OJ上試過 我們學校OJ基本無防護 別的OJ沒試過
原理很簡單 從自己的賬號信息找到自己的提交 遍歷正則下來就行
這個很簡單啊、去廖雪峰的博客上花一下午學學Python姿勢、然後就可以造小爬蟲咯!、
我寫過:
python模擬登陸codevs(事實上模擬登陸寫完之後、抓取ac代碼就是分分鐘的問題了)
爬蟲備份過codevs全站的題面並轉換成markdown
和夥伴一起備份過BZOJ的非許可權題題面並轉換成pdf
帶自動註冊的刷票腳本
推薦閱讀:
TAG:Python | 編程 | 爬蟲計算機網路 | OnlineJudge | ACM競賽 |