Что нового

[Данные, строки] Автообновляющееся окно с собранными данными web-страницы

eLDeus

Новичок
Сообщения
8
Репутация
0
Версия AutoIt: 3.3.6.1
Описание:
Добрый день. Суть в следующем. Есть страничка с расширением .htm, нужен скрипт, чтобы на ней автоматически находить 7-значиные номера по шаблону, начинающиеся на "14" и оканчивающиеся каждый раз динамически на разную цифру от 0 до 9. Например, на странице есть список таких номеров, все они состоят из 7 знаков, начинаются на 14, и заканчиваются, соответственно, на разные цифры. Нужен скрипт, который будет в своем pop-up окне отображать только те номера из web-страницы, которые оканчиваются на определенную цифру, например, только на 8, и привязать к этим номерам ссылку, внутри которой будут располагаться эти же самые номера, чтобы они могли открываться в браузере, каждая индивидуально, соответственно, по номеру внутри ссылки, т.е. ссылка на ресурс фактически одна, только открываться в браузере будет та страница, ссылка который будет содержаться нужный номер, например "1499548". Общая ссылка, не считая доменного имени, выглядит так:
[https://mysite.com/TroubleOne.phtml?get_FullTroubleInfo=1&Trouble_ID=1499548&TPassVar_SubObj=order]
Как видно, внутри нее после "ID=" идет номер, так вот, нужно, еще раз уточню, чтобы скрипт отображал маленькое окно поверх всех остальных окон в системе и показывал все номера с ссылками в каждом из них по шаблону той, которую я привел выше (с разным номером для каждого найденного номера на странице).
Далее необходимо, чтобы скрипт выполнял эту операцию циклично где-то раз в 2 минуты и в случае уже добавленных номеров в окно, "отмечал" для себя, что номер с такой ссылкой уже есть и продолжал операцию дальше, т.е. чтобы не упирался в тупик, а действовал циклично, по возможности, в фоновом режиме.

Есть альтернатива, сделать не отдельное окно, а возможность добавлять нужные номера в закладки Firefox на панель закладок, если у AutoIt есть такая возможность, т.е. отслеживать на странице, какие номера подпадают под критерий поиска и добавлять для каждого такого номера собственную закладку с уникальной ссылкой по номеру внутри, как я описал выше.

Примечания:
Понимаю, замороченно звучит, но я постарался насколько можно детальнее расписать суть дела.
В общем, если вообще возможно с помощью AutoIt сделать то, что я описал, было бы здорово. Если я не привел какую-то информацию, скажите.
В наличие Windows 7, браузер Firefox Portable 27, AutoIt 3.3.6.

Буду признателен за любую помощь, спасибо!
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Так?

Код:
; Header
#include <Array.au3>
#include <ListBoxConstants.au3>
#include <ButtonConstants.au3>
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
AutoItSetOption("GUICloseOnESC", 0)
AutoItSetOption("GUIOnEventMode", 1)
; End header

; Functions
Func GetNumbersLinks()
$sContent = FileRead("3.htm"); здесь получаем наш htm файл с номерами
$spattern = "(14[0-9]{4}8)"
;ConsoleWrite($sContent)
$aNumbs = StringRegExp($sContent, $sPattern, 3)
If @error Then
Return SetError(1, 0)
EndIf
;_ArrayDisplay($aNumbs)
Local $aLinks[0]
For $i = 0 To UBound($aNumbs)-1
$linkstr = "https://mysite.com/TroubleOne.phtml?get_FullTroubleInfo=1&Trouble_ID="&$aNumbs[$i]&"&TPassVar_SubObj=order"
_ArrayAdd($aLinks, $linkstr)
$linkstr = ""
Next
;_ArrayDisplay($aLinks)
Return $aLinks
EndFunc
Func close()
Exit
EndFunc
Func UpdateList()
$aLinksList = GetNumbersLinks()
If IsArray($aLinksList) And Not @error Then
GUICtrlSetData($list1, "|")
For $i = 0 To UBound($aLinksList)-1
GUICtrlSetData($list1, $aLinksList[$i])
Next
EndIf
EndFunc
Func exec_item()
If GUICtrlRead($list1) <> "" Then
ShellExecute(GUICtrlRead($list1))
Else
MsgBox(64, "Открыть ссылку в браузере", "Вы не выбрали ссылку из списка", 30, $StartGui)
GUICtrlSetState($list1, $GUI_FOCUS)
EndIf
EndFunc
; End functions

; Program
$StartGui = GUICreate("Номера", 600, 300)
GUISetOnEvent($GUI_EVENT_CLOSE, "close", $StartGui)
$Label1 = GUICtrlCreateLabel("Ссылки с номерами", 20, 20, 120, 30)
$list1 = GUICtrlCreateList("", 20, 70, 450, 170, BitOR($WS_BORDER, $WS_VSCROLL))
GUICtrlSetState($list1, $GUI_FOCUS)
$cont1 = GUICtrlCreateContextMenu($list1)
$item1 = GUICtrlCreateMenuItem("Обновить список", $cont1)
GUICtrlSetOnEvent($item1, "UpdateList")
UpdateList()
AdlibRegister("UpdateList", 60*2000); 2 min
$ExecButton = GUICtrlCreateButton("Открыть ссылку в браузере", 20, 250, 160, 30)
GUICtrlSetOnEvent(-1, "exec_item")
GUISetState(@SW_SHOW, $StartGui)
While 1
Sleep(1000)
WEnd
; End program
А вот насчёт добавления в закладки я пока затрудняюсь сказать...
 
Автор
E

eLDeus

Новичок
Сообщения
8
Репутация
0
alex33, я немного ошибся, основная страничка - phtml типа:
https://mysite.com:8200/TroubleAgent_frame.phtml
и на для нее требуется авторизация (логин и пароль), не знаю, будет ли достаточно авторизоваться один раз в браузере или придется прописать в скрипте... Спасибо за помощь!
 
Верх