Форум сайта python.su
В один прекрасный день (на прошлой неделе) я понял, что мне таки надоело с определённой периодичностью заходить в личный кабинет и проверять свой баланс. Решил немного автоматизировать данный процесс и выводить всю статистику себе в консоль.
Всё сделал, рабоатет отлично, только не могу оценить своим замыленным взглядом, на сколько корректно я это сделал.
Как высчитаете? Может быть что-то я слишком усложнил?
Использую три временных файла для обработки результата.
1. ses.html - для выборки от туда идентификатора сессии.
При логине, пользователя перебрасывает на страницу где есть лишь java script с идентификатором сессии.
Естественно редирект не отрабатывает, я решил поступить именно так.
2. result.html - сюда сохраняется основная страница со всей необходимой информацией.
На данной странице куча всякой статичной информации, но проблема в том, что она вся в приблизительно одинаковых таблицах. Нужные мне таблицы я решил сохранить в отдельной файл, сделав выборку по их ширине (“width='250”).
3. parse.html - это конечный файл включающий всю необходимую информацию. Выглядит он так:
<td align=“right” width='250'><b>*****</b></td>
<td align=“right” width='250'><b>*****</b></td>
<td align=“right” width='250'><b><font color=green>*****</font> </b></td>
<td align=“right” width='250'><b>*****</b></td>
<td align=“right” width='250'><b>*****</b></td>
<td align=“right” width='250'><b>*****</b></td>
<td align=“right” width='250'><b>*****</b></td>
<td align=“right” width='250'><b>*****</b></td>
<td align=“right” width='250'><b>*****</b></td>
<td align=“right” width='250'><b>*****</b></td>
<td align=“right” width='250'><b><font color=green>*****</font></b></td>
И я, зная какие строчки меня интересуют делаю простой поиск по шаблону в заданном интервале.
#!/usr/bin/env python import mechanize, cookielib, re br = mechanize.Browser() cj = cookielib.LWPCookieJar() br.set_cookiejar(cj) br.set_handle_equiv(True) br.set_handle_gzip(False) br.set_handle_redirect(True) br.set_handle_referer(True) br.set_handle_robots(False) br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1) br.addheaders = [('User-agent', 'Mozilla/5.0')] br.open("https://myprovider.net/") br.select_form(nr=0) br["Login"] = "mylogin" br["Password"] = "mypasswd" br.submit(name='Submit') results = br.response().read() f = open('ses.html', 'w') f.write(results) f.close() regex = re.compile('Session=(.*)"') with open('ses.html') as file: for line in file.readlines(): if "Session" in line: src = regex.findall(line) ses = ''.join(src) br.open("https://myprovidernet/index.php?Session=" + ses) statistics = br.response().read() f2 = open('result.html', 'w') f2.write(statistics) f2.close() with open('result.html') as file: f3 = open('parse.html', 'w') for line in file.readlines(): if "width='250'" in line: line.strip() f3.write(line) f3.close() f3 = open("parse.html") line = f3.readlines() if "green" in line[2]: status = "enable" else: status = "disable" balance = re.search("[0-9.]+", line[3][34:45]).group() credit = re.search("[0-9.]+", line[4][34:45]).group() daysleft = re.search("[0-9.]+", line[9][34:40]).group() print "" print "===================" print "STATUS: %s" % status print "BALANCE: %s rub" % balance print "" print "CREDIT: %s" % credit print "DAYS LEFT: %s" % daysleft print "===================" print "
Офлайн