Автор Тема: Залогиниться, спарсить нужную информацию и вывести в трей  (Прочитано 2005 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн den4ik [?]

  • Новичок
  • *
  • Сообщений: 17
  • Репутация: 0
  • Пол: Мужской
    • Награды
Друзья, помогите с решением следующей задачи:
пишу программу для автоматизации тривиальных задач тех. поддержки интернет провайдера
есть кабинет интернет пользователя
нужно спарсить информацию о состоянии депозита и остатка трафика, бьюсь долго и разными методами, в XML который формирует биллинг нет нужной информации

вот пример кода, который приводит в нужное нам место, а как вытащить нужную инфу не могу разобраться

Код: AutoIt [Выделить]
#include <IE.au3>

$Base_Url = "https://abills.nettv.uz"
$User = '1570'
$Pwd = '12341234'
$test = _IEAutoLogin($Base_Url, $User, $Pwd)

Func _IEAutoLogin($_sUrl, $_sUsername, $_sPwd)
    Local $iIndex = 0
    Local $oInputs, $oButton, $oIE, $oForm, $oLogin, $oPasswd

    $oIE = _IECreate($_sUrl)
    $oForm = _IEFormGetObjByName($oIE, 0)
    $oLogin = _IEFormElementGetObjByName($oForm, "user")
    $oPasswd = _IEFormElementGetObjByName($oForm, "passwd")

    _IEFormElementSetValue($oLogin, $_sUsername)
    _IEFormElementSetValue($oPasswd, $_sPwd)
    $oButton = _IEFormElementGetObjByName($oForm, "logined")
    _IEAction($oButton, "click")
    Sleep(1000)

 _IELoadWait($oIE)
$sSid = ''
$oLinks = _IETagNameGetCollection($oIE, "a")
If IsObj($oLinks) Then
    For $oLink In $oLinks
        $sLinkUrl = $oLink.href
        $sLinkHtml = $oLink.innerHTML
        If StringInStr($sLinkHtml, "Internet") Then
            $tmp = StringRegExp($sLinkUrl, '.*?sid=([^&]*)', 3)
            If IsArray($tmp) Then
                $sSid = $tmp[0]
            Else
                $sSid = ''
            EndIf
            ConsoleWrite(StringFormat("+----------+\r\nFound link:\r\nURL: %s\r\nHTML: %s\r\nlink sid: %s\r\n+----------+\r\n", $sLinkUrl, $sLinkHtml, $sSid))
              _IENavigate($oIE, $_sUrl & "/index.cgi?index=44&sid="&$sSid)

_IELoadWait($oIE)
 $oInputs = _IETagNameGetCollection ($oIE, "a")
$file=_IETagNameGetCollection ($oIE, "a")
$str=StringRegExpReplace($file,'(?si).*?\<td\>((?:(?!\<\td\>).)+)\<\td\>).*','\1')
MsgBox(32,'',$file)
 ExitLoop
        EndIf
     Next
EndIf

EndFunc   ;==>_IEAutoLogin
 


хотелось бы что бы выполнялось все в фоне и не видимо для пользователя
и вытащить нужно данные из верхней таблицы "Предоплата" - Тип 0: , Всего и Осталось в сообщение в трее
« Последнее редактирование: Январь 08, 2016, 10:19:58 от den4ik »

Русское сообщество AutoIt


Оффлайн Garrett [?]

  • Глобальный модератор
  • *
  • Сообщений: 3657
  • Репутация: 932
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
den4ik  [?]
Цитировать
хмл

ПредупреждениеЗа нарушение общих правил (пункт В.8):
Цитировать
Так как эта конференция называется "Русское сообщество AutoIt", язык общения на ней - Русский. Названия фирм или программных продуктов, аббревиатуры и т.д. должны быть написаны так, как они пишутся в оригинале, например не следует писать УСБ вместо USB. На форуме крайне не рекомендуется намеренно искажать русский язык и использовать "сетевой жаргон" на подобии "Аффтар выпей йадау!".


С уважением, ваш Глобальный модератор.

Скорблю и помню.




Онлайн inververs [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 2019
  • Репутация: 442
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Для лл:
Код: (html5) [Выделить]
  1. <table class="kabinet-styled_table" id="kabinet-filter_table" summary="">
  2. <tbody><tr><td class="tcaption" colspan="3">Предоплата</td></tr>
  3. <tr><td class="cel_border" colspan="3"><table>
  4. <tbody><tr><th class="table_title"> Тип</th><th class="table_title">Начало</th><th class="table_title">Конец</th><th class="table_title">Начало</th><th class="table_title">Всего (MB)</th><th class="table_title">Осталось (MB)</th><th class="table_title">Оверквота (MB)</th></tr>
  5. <tr class="odd marked" id="row_1"><td>0:/ 12</td><td>00:00:00</td><td>24:00:00</td><td>2015-12-12</td><td>0</td><td>0</td><td>0</td></tr>
  6. <tr class="odd" id="row_2"><td>1:/ 12</td><td>00:00:00</td><td>24:00:00</td><td>2015-12-12</td><td>0</td><td>0</td><td>0</td></tr>
  7. </td></tr></tbody></table>


Добавлено: Январь 08, 2016, 12:31:47
Код: AutoIt [Выделить]
$oTable = _IEGetObjById($oIe, 'kabinet-filter_table')
$oSubTable = _IETableGetCollection($oTable, 1)
$aTableData = _IETableWriteToArray($oSubTable)
_ArrayDisplay($aTableData)



Добавлено: Январь 08, 2016, 12:36:23
В массиве будет:
Тип0:/ 121:/ 12
Начало00:00:0000:00:00
Конец24:00:0024:00:00
Начало2015-12-122015-12-12
Всего (MB)00
Осталось (MB)00
Оверквота (MB)00




« Последнее редактирование: Январь 08, 2016, 12:36:23 от inververs, Причина: Объединение сообщений »

Оффлайн den4ik [?]

  • Новичок
  • *
  • Сообщений: 17

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
подскажите пожалуйста куда в мой кусок кода вставить ваш код? не получается вывести данные, все по нулям

Русское сообщество AutoIt

Re: Залогиниться, спарсить нужную информацию и вывести в трей
« Ответ #3 Отправлен: Январь 08, 2016, 12:50:56 »

Онлайн inververs [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 2019
  • Репутация: 442
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Вставляйте после того, как загрузилась статистика, ваш код не смотрел :)

Оффлайн den4ik [?]

  • Новичок
  • *
  • Сообщений: 17

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
вставляю после того, как открываю статистику
Код: AutoIt [Выделить]
 _IENavigate($oIE, $_sUrl & "/index.cgi?index=44&sid="&$sSid)

и..результат 0 :-[

Онлайн inververs [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 2019
  • Репутация: 442
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
кто его знает, должно работать

Оффлайн den4ik [?]

  • Новичок
  • *
  • Сообщений: 17

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
кто его знает, должно работать
но никак

Русское сообщество AutoIt

Re: Залогиниться, спарсить нужную информацию и вывести в трей
« Ответ #7 Отправлен: Январь 08, 2016, 14:51:12 »

Онлайн inververs [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 2019
  • Репутация: 442
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Попробуйте так:
Код: AutoIt [Выделить]
$oTable = _IETableGetCollection($oIe, 3)
$aTableData = _IETableWriteToArray($oTable)
_ArrayDisplay($aTableData)


Оффлайн den4ik [?]

  • Новичок
  • *
  • Сообщений: 17

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
теперь бы это все в фоне и с выводом в трей  :think:
попробую написать, если есть идеи как это реализовать буду очень рад

Онлайн inververs [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 2019
  • Репутация: 442
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Код: AutoIt [Выделить]
- это сообщение в трей.

Оффлайн uritalex [?]

  • Новичок
  • *
  • Сообщений: 165
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
А для скрытности используйте так :
Код: AutoIt [Выделить]
$oIE = _IECreate($_sUrl,0,0)   ;скрыть отображение браузера


Оффлайн den4ik [?]

  • Новичок
  • *
  • Сообщений: 17

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
uritalex спасибо,
а как из из массива забрать данные, например я сейчас получаю вот это:

RowCol0Col1Col2Col3
[0]Всего МБ1500015000
[1]Осталось МБ1500015000
[2]Оверквота000

а мне нужно без "Col3"
и вообще, можно ли как то маркировать данные из этих ячеек в переменные что бы потом подставлять в трей или сообщение?

Оффлайн Garrett [?]

  • Глобальный модератор
  • *
  • Сообщений: 3657
  • Репутация: 932
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
den4ik  [?]
Цитировать
подставлять в трей или сообщение
Код: AutoIt [Выделить]
$sText = StringFormat("%s\t(%d) (%d)\n%s\t(%d) (%d)\n%s\t(%9d) (%7d)\n", _
                      $aTableData[0][0], $aTableData[0][1], $aTableData[0][2], _
                      $aTableData[1][0], $aTableData[1][1], $aTableData[1][2], _
                      $aTableData[2][0], $aTableData[2][1], $aTableData[2][2])
TrayTip("Читаем справку!", $sText, 10)


Русское сообщество AutoIt

Re: Залогиниться, спарсить нужную информацию и вывести в трей
« Ответ #13 Отправлен: Январь 09, 2016, 09:27:36 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
6 Ответов
6171 Просмотров
Последний ответ Октябрь 14, 2010, 18:43:44
от Noober
22 Ответов
9492 Просмотров
Последний ответ Май 06, 2014, 14:37:07
от Voodooman
16 Ответов
10345 Просмотров
Последний ответ Декабрь 01, 2010, 19:49:05
от Mr. Anderson
7 Ответов
2668 Просмотров
Последний ответ Март 08, 2012, 12:51:59
от _Lexa98_
6 Ответов
3344 Просмотров
Последний ответ Май 20, 2012, 05:27:00
от eropov
0 Ответов
942 Просмотров
Последний ответ Октябрь 11, 2013, 09:38:21
от madmasles
5 Ответов
943 Просмотров
Последний ответ Май 11, 2014, 23:31:07
от CreatoR
10 Ответов
2238 Просмотров
Последний ответ Ноябрь 27, 2014, 18:46:41
от Garrett
38 Ответов
6337 Просмотров
Последний ответ Январь 30, 2015, 13:22:05
от Velmor
0 Ответов
464 Просмотров
Последний ответ Январь 11, 2017, 19:57:47
от Dessan