模拟SDUT OJ登陆

#!/usr/bin/env python
#-*-coding:utf-8-*-

import sys
import  urllib, urllib2
import cookielib
import getpass
from bs4 import BeautifulSoup

home_url = 'http://acm.sdut.edu.cn/onlinejudge2/index.php/Home'
login_url = 'http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Login/login'    

#安装cookie处理
cookie_support = urllib2.HTTPCookieProcessor(cookielib.CookieJar())
opener = urllib2.build_opener(cookie_support)
urllib2.install_opener(opener)

#初始化cookie
home_temp = urllib2.urlopen(home_url)

#伪装成goole浏览器,以免服务器拒绝访问
headers = {'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36'}

uername = raw_input('请输入用户名')
key = getpass.getpass('请输入登录密码') #密码不可见

values = {'user_name': uername, 'password': key}

#login
post = urllib.urlencode(values)
request = urllib2.Request(login_url, post, headers)
response = urllib2.urlopen(request)
html = response.read()

#解析登录后的页面并判断是否登录成功
soup = BeautifulSoup(html, 'lxml')
if soup.find(text = 'Logout') != None:
    print '登录成功!'
else:
    print '登录失败!'
    sys.exit(0) #直接退出
    
#找到个人信息页面
info_url = 'http://acm.sdut.edu.cn' + soup.find(class_ = 'nav navbar-nav navbar-right').li.a['href']
html = urllib2.urlopen(info_url)
info = BeautifulSoup(html, 'lxml')

#然后就可以搞事情啦~获取你想要的信息,比如这里我们获取用户AC的题目
temp = str(info.find_all(class_ = 'inner problem_list')[1])
temp = temp[33:-7]
t =  temp.split('</a>')
problem = []
for i in range(len(t)-1):
	string = str(t[i])
	problem.append(string[-4:])
problem.sort()
print problem
print '总共%d个'% len(problem)

放一张运行截图吧


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值