Возможности новой версии:
- Парсинг сайта для получения версии справочников;
- Добавлен ini-файл для изменения настроек;
НАПОМИНАЛКА 1.1(парсинг через ie.au3)[sdm_download id=»762″ fancy=»0″]
НАПОМИНАЛКА 1.1.1(парсинг через winhttp)[sdm_download id=»777″ fancy=»0″]
НАПОМИНАЛКА 1.0(только sql запрос)[sdm_download id=»773″ fancy=»0″]
Настройка программы
При первом запуске программы появиться сообщение о необходимости настроить подключение и запустится блокнот для редактирования настроек.
- server — Указываем ip адрес базы данных Витакарты(127.0.0.1)
- database — Имя базы данных;
- UID — логин;
- PWD — пароль БД ;
- Kompit — сайт где находятся новые версии справочников;
Функция парсинга
Парсинг через ie.au3
Для того, чтобы использовать этот вариант необходимо подключить UDF IE(#include <IE.au3>).
Для получения информации о версии справочников я добавил функцию _Request_TF($sUrl). Функция имеет один параметр $sUrl и возвращает массив с результатом.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Func _Request_TF($sUrl) Local $aArray = [] $oIE=_IECreate($sUrl,0,0) $sHTML = _IEBodyReadHTML ($oIE) ; Читает код между тегов <body> и </body> $sSearch = StringRegExp($sHTML, '(?si)<P class=MsoNormal style="TEXT-ALIGN: center; MARGIN-TOP: 3pt" align=center><B style="mso-bidi-font-weight: normal">(.*?)</P>', 3) $sOutput = StringRegExpReplace($sSearch[1], "[A-Za-zа-яё[:punct:]]", "") $sInput = StringStripWS($sOutput,8) $sOutput = StringRegExpReplace($sInput, "^(\d{2})(\d{2})(\d{4}).*", "\1.\2.\3") _ArrayAdd($aArray, $sOutput) $sOutput1 = StringRegExpReplace($sSearch[4], "[A-Za-zа-яё[:punct:]]", "") $sInput = StringStripWS($sOutput1,8) $sOutput = StringRegExpReplace($sInput, "^(\d{2})(\d{2})(\d{4}).*", "\1.\2.\3") _ArrayAdd($aArray, $sOutput) _IEQuit ($oIE) ;_ArrayDisplay($aArray) Return $aArray EndFunc;==>_Request_TF |
Минус этого варианта в том, что не на всех компьютерах правильно настроен Internet Explorer и работает он не очень быстро.
Парсинг через winhttp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
Func _Request_TF($sUrl) Local $aArray = [] $oRequestrub = ObjCreate('WinHttp.WinHttpRequest.5.1') ; создаем обьект WinHttp. If @error Then MsgBox(8192+16, ' Внутреняя Ошибка', 'Ошибка при создании объекта "WinHttp.WinHttpRequest.5.1".') Exit 1 EndIf $oRequestrub.Open('GET', $sUrl, 0) $oRequestrub.setTimeouts(5000, 5000, 15000, 15000) $oRequestrub.SetRequestHeader('Accept', '*/*') $oRequestrub.SetRequestHeader("User-Agent", " Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.71 Safari/534.24") $oRequestrub.Send('') ; отправляем $oRequestrub.WaitForResponse $pDatarub = $oRequestrub.ResponseText ; получаем текст стр в $pDatrub $sSearch = StringRegExp($pDatarub, "(?si)<p class=MsoNormal align=center style='margin-top:3.0(.*?)</p>", 3) ; ищем символы в HTML If IsArray($sSearch) Then ; если нашли то >> ;_ArrayDisplay($sSearch) $sOutput = StringRegExpReplace($sSearch[1], "[A-Za-zа-яё[:punct:]]", "") $sInput = StringStripWS($sOutput,8) $sOutput = StringRegExpReplace($sInput, "^(\d{2})(\d{2})(\d{4}).*", "\1.\2.\3") ;~ ;MsgBox(0, "Результат до и после", $sInput & @LF & $sOutput) _ArrayAdd($aArray, $sOutput) $sOutput1 = StringRegExpReplace($sSearch[5], "[A-Za-zа-яё[:punct:]]", "") $sInput = StringStripWS($sOutput1,8) $sOutput = StringRegExpReplace($sInput, "^(\d{2})(\d{2})(\d{4}).*", "\1.\2.\3") _ArrayAdd($aArray, $sOutput) EndIf Return $aArray EndFunc;==>_Request_TF |
Вызываем функцию
1 2 3 4 |
$aTF = _Request_TF("http://siteparse/REG_RG/_pr_regr.htm") GUICtrlSetData($idmyedit, @HOUR & ':' & @MIN & ':' & @SEC & "/_pr_regr получены данные" & @CRLF, 1) $aFR = _Request_TF("http://siteparse/FED_RG/_pr_fedr.htm") GUICtrlSetData($idmyedit, @HOUR & ':' & @MIN & ':' & @SEC & "/_pr_fedr получены данные" & @CRLF, 1) |
Информация для отображения:
- РР полный — $aTF[2]
- РР на день — $aTF[1]
- ФР — $aFR[1]