这个我是先在我的公众号上发的,所以,可以点击下面这个链接访问我之前做好的公众号推文吧!
公众号推文,点击访问。先看这个文章,再看我写的改进版啊!!!!
下面就展示下,我根据之前在公众号上的推文,改良版的新代码吧!
虽然下面的网址,是只能在中山大学校园内,才能访问(挂上VPN也可以)。但是,模拟登录的思路以及方法都是一样的。
输入用户名跟密码,就会登录上你的soj,并输出的个人目前刷完的所有题目编号。
import requests
from bs4 import BeautifulSoup
url = 'http://222.200.185.45'
my_header = {'X-Requested-With': 'XMLHttpRequest',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',
}
un = input('Username: ')
pw = input('Password: ')
data = {
'username': un,
'password': pw,
'lsession': 1
}
Soj_session = requests.session()
res = Soj_session.post(url + '/action.php?act=Login', data=data, headers=my_header)
# 完成登录了!
res2 = Soj_session.get('http://222.200.185.45')
soup = BeautifulSoup(res2.text, 'lxml')
nickname = soup.find('a', attrs={'class': 'nickname'})
personalPageUrl = url + '/' + nickname['href']
personalPage = Soj_session.get(personalPageUrl)
soup = BeautifulSoup(personalPage.text, 'lxml')
soup = soup.find_all('table', attrs={'class': 'ui-widget tblcontainer ui-widget-content ui-corner-all'})[-1]
problem_list = soup.find_all('a', attrs={'class': 'black'})
for p in problem_list:
print(p.text, end=',')
最后,老套路,宣传一波自己的公众号!(求关注哇!)
本人中大一肥宅,欢迎大家关注,请扫下面的二维码(〃’▽’〃)
如果觉得有帮助的话,可以扫码,赞赏鼓励一下!谢谢!