Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import requests
- from bs4 import BeautifulSoup
- from PIL import Image
- class lms:
- def __init__(self, username, password):
- self.username = username
- self.password = password
- self.user_info = {}
- self.res = {}
- self.s = requests.Session()
- self.s.headers.update({'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0'})
- self.login()
- try:
- self.get_info()
- except:
- self.user_info['курс'] = ''
- self.user_info['группа'] = ''
- def login(self):
- url = 'http://lms.mai.ru/'
- self.s.get(url, allow_redirects = True)
- url_post = 'http://lms.mai.ru/login/index.php'
- post_data = {'password': self.password,
- 'username': self.username}
- self.s.post(url_post, data = post_data, allow_redirects = True)
- p = self.s.get('http://lms.mai.ru/', allow_redirects = True)
- self.user_info['имя'] = BeautifulSoup(p.text, 'lxml').find('div', class_='logininfo').find('a').text.strip()
- def get_info(self):
- url = 'http://lms.mai.ru/user/profile.php'
- r = self.s.get(url)
- soup = BeautifulSoup(r.text, 'lxml')
- data = soup.find('div', class_='description').find('p').text.strip().split()
- self.user_info['курс'] = data[1]
- self.user_info['группа'] = data[4]
- def check_res(self, url):
- r = self.s.get(url)
- soup = BeautifulSoup(r.text, 'lxml')
- try:
- self.attempts = {}
- for a in soup.find('table', class_='generaltable').find('tbody').find_all('tr'):
- data = [n.text.strip() for n in a.find_all('td')]
- if len(data) > 3:
- attempt_info = {'результат': data[3],
- 'url': a.find_all('td')[4].find('a').get('href')}
- else:
- attempt_info = {'результат': '',
- 'url': a.find_all('td')[2].find('a').get('href')}
- self.attempts[int(data[0])] = attempt_info
- except:
- pass
- def get_res(self, url):
- url = url + '&showall=1'
- r = self.s.get(url)
- soup = BeautifulSoup(r.text, 'lxml')
- self.issues = []
- for a in soup.find_all('div', class_='que'):
- issue = {}
- issue['балл'] = a.find('div', class_='grade').text.strip().split()[1]
- try:
- issue['вопрос'] = a.find('div', class_='qtext').text.strip()
- except:
- continue
- try:
- issue['url вопроса'] = a.find('div', class_='qtext').find('img').get('src')
- except:
- pass
- try:
- issue['ответ'] = a.find('span', class_='answer').find('input').get('value')
- except:
- pass
- try:
- s = ''
- for k in a.find('table', class_='answer').find('tbody').find_all('tr'):
- s = s + k.find('td', class_='text').text.strip() + ': '
- s = s + k.find('td', class_='control').find('option', selected='selected').text.strip() + '\n'
- issue['ответ'] = s
- except:
- pass
- try:
- s = ''
- for k in a.find('div', class_='answer').find_all('input', checked="checked"):
- s = s + k.next_sibling.text.strip() + '\n'
- issue['ответ'] = s
- try:
- issue['url ответа'] = k.next_sibling.find('img').get('src')
- except:
- pass
- except:
- pass
- self.issues.append(issue)
- def get_image(self, url):
- r = self.s.get(url, stream = True)
- with open('buf.jpg', 'wb') as f:
- for chunk in r:
- f.write(chunk)
- img = Image.open('buf.jpg')
- img.save('buf.bmp')
- def __del__(self):
- pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement