Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 1, 2013 16:39:32

ssv1
Зарегистрирован: 2012-12-22
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

Статус и баланс по домашнему интернету себе в консоль


В один прекрасный день (на прошлой неделе) я понял, что мне таки надоело с определённой периодичностью заходить в личный кабинет и проверять свой баланс. Решил немного автоматизировать данный процесс и выводить всю статистику себе в консоль.

Всё сделал, рабоатет отлично, только не могу оценить своим замыленным взглядом, на сколько корректно я это сделал.

Как высчитаете? Может быть что-то я слишком усложнил?

Использую три временных файла для обработки результата.

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 "

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version