Python爬取OJ提交过的代码
来源:互联网 发布:为什么淘宝评论删不掉 编辑:程序博客网 时间:2024/04/28 04:42
把之前在学校OJ提交过得正确代码保存到本地,做一下备份。主要用到了requests和bs,还是挺好玩的hhh。
import requestsfrom bs4 import BeautifulSoupimport reimport osclass Code(object):"""docstring for Code"""#初始化常用信息def __init__(self):self.home_url = 'http://acm.sdut.edu.cn/onlinejudge2/index.php/Home'self.login_url = 'http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Login/login'self.headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36'}self.user = 'tooog'self.passw = '123123'def login(self,url):post_data ={'user_name':self.user,'password':self.passw}self.post(self.login_url,post_data)def post(self,url,post_data):session.post(url,post_data,headers = self.headers)self.check_login()#检查登陆状态def check_login(self):html = self.session_get(self.home_url)Soup = BeautifulSoup(html.text,'html5lib')if(Soup.find(text = 'Logout') != None):print('登陆成功')info_url = 'http://acm.sdut.edu.cn' + Soup.find('ul',class_ = 'navbar-right').find('a')['href']self.info(info_url)else:print('登陆失败')exit()#个人信息页def info(self,url):info_html = self.session_get(url)sub_href = re.search('href="(.*?)">Submissions',info_html.text).group(1)sub_url = self.home_url + sub_hrefself.submissions(sub_url)#代码提交记录页def submissions(self,url):url = 'http://acm.sdut.edu.cn/onlinejudge2/index.php/Solution/status/username/' + self.user + '/result/1/p/1.html'self.page(url)#翻页处理def page(self,url):sub_html = self.session_get(url)page_num = BeautifulSoup(sub_html.text,'html5lib').find_all('a',class_ = 'num')[-1].get_text()for pg in range(1,int(page_num)+1):page_url = url[:-6] + str(pg) +'.html'self.find_code(page_url)def find_code(self,url):all_code = self.session_get(url)tr_list = BeautifulSoup(all_code.text,'html5lib').find('tbody').find_all('tr')for tr in tr_list:td = tr.find_all('td')code_id = td[2].textcode_href = td[6].a['href']code_url = 'http://acm.sdut.edu.cn' + code_hrefself.save(code_url,code_id)def save(self,url,code_id):code_html = self.session_get(url)code = BeautifulSoup(code_html.text,'html5lib').find('pre',class_ = 'brush:cpp;').get_text()f = open(code_id+'.cpp','w')f.write(code)f.close()def session_get(self,url):content = session.get(url,headers = self.headers)return content#cookie处理session = requests.Session()if __name__ == '__main__':code = Code()code.login('http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Login/login')
阅读全文
1 0
- Python爬取OJ提交过的代码
- Python编写网页爬虫爬取oj上的代码信息
- Python爬取SDUTOJ比赛提交代码及批量提交(爬虫(伪))
- 用Python爬取解析过的网页
- python爬取视频代码
- 关于在OJ提交的代码里的注释问题
- Python网络爬取的代码以及信息
- 最简单的Python爬取web图片代码
- Python网页爬取的通用代码框架
- Python爬取登录后的OJ练习中的题目数据
- 杭电 OJ 提交代码需要注意的问题
- OJ 中,提交代码时,C++ 和 G++的区别
- python 爬取TOJ 上 读取 提交但未AC 的题目
- python网络爬虫爬取图片代码
- Python 爬取网页HTML代码
- python爬取网页代码框架
- 用过的oj网址
- 大数相加的原理及代码(杭电OJ上AC过的)实现
- 删除字符串中指定的字符,如果字符前后有指定的标点符号也一并删除
- Java 循环结构
- GJJ的日常之再游戏
- 基于vue2.0打造移动商城页面实践
- IDEA sliksvn提交代码提示no changes detected
- Python爬取OJ提交过的代码
- LeetCode(279)Perfect Squares
- maven配置
- mysql中CONCAT_WS的用法
- linux内核定时器
- GJJ来签到
- UVa 636
- Leetcode-Intersection of Two Linked Lists-Python
- XCode开发学习