powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / немножко про роботов для сбора информации из интернета на webbrowser
2 сообщений из 2, страница 1 из 1
немножко про роботов для сбора информации из интернета на webbrowser
    #39759888
MsDatabaseru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наработки из приложения которое стартует по расписанию заходит на страницы интернет банка скачивает выписку, парсит ее и записывает сведения в базу а также скачивает копии платежных документов в пдф.

общая схема
1. выделен отдельный старенький ноут на котором по расписанию две задачи одна перезагрузка раз в сутки вторая -запуск приложения ежечасно в рабочие часы.
2. приложение будучи запущенным с определенным ключом запускает по очереди формы с функционалом работы с тем или иным банком. При этом происходит не взлом ресурса а эмулируется работа пользователя, в том числе выполняются скрипты и формируются динамически создаваемые страницы.
3. на форме размещен контрол webbrowser и кнопка запуска / отладки процесса вручную
4. в ходе работы программый код управляет навигацией в компоненте веббраузер втч проходит аутентификацию т.е. вводит логин и пароль, делает выбор опций, переходит по ссылкам, совершает эмуляцию нажатий на элементы разметки страницы, закачивает файлы втч пдф с защищенных страниц.

из windows-шедулера запускается vbs скрипт следующего содержания
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\.\root\cimv2")

Set colProcessList = objWMIService.ExecQuery _
    ("Select * from Win32_Process Where Name = 'MSACCESS.exe'")

Set oShell = CreateObject("WScript.Shell")
For Each objProcess in colProcessList
    objProcess.Terminate()
Next

access1Xpath = "C:\Program Files (x86)\Microsoft Office\Office12\MSACCESS.EXE"
workdirclientfile = "C:\base\buch\internetbank.adp"
StartupParams = "/CMD robot"

wscript.sleep 2000
oShell.Run """" & access1Xpath  & """ """ &  workdirclientfile & """ " & StartupParams





как отловить аргумент запуска приложения в функции автозагрузки
Код: vbnet
1.
ISRobotmode = CStr(Command()) Like "*Robot*"



затем открываем форму и запускаем публичный метод btn_login_Click
Код: vbnet
1.
2.
  DoCmd.OpenForm "webclient"
  Forms("webclient").btn_login_Click




некоторые методы работы с вебраузером
вход на страницу аутертификации
Код: vbnet
1.
2.
3.
4.
Me.WebBrowser1.SetFocus
Me.WebBrowser1.navigate "https://businessinfo.r....k.ru/"
Me.WebBrowser1.Silent = True
wait_ready


при этом сайлент предотвращает появление некоторых ненужных диалогов в случае ошибок скриптов на странице

функция ожидания готовности загрузки страницы может выглядеть так
Код: vbnet
1.
2.
3.
4.
5.
Private Sub wait_ready()
Do While Me.WebBrowser1.Busy Or Me.WebBrowser1.readyState <> READYSTATE_COMPLETE
   DoEvents
Loop
End Sub



ввести логин в определенное поле
Код: vbnet
1.
Me.WebBrowser1.Document.getElementsByName("Login[id]")(0).Value = "xxxxxxxxxx"



найти кнопку выполнить обработку событий фокус и клик
Код: vbnet
1.
2.
3.
Set btn = Me.WebBrowser1.Document.getElementsByClassName("js-ajax-load b-btn g-btn")(0)
btn.focus
btn.Click



ввод данных вебформы
Код: vbnet
1.
Me.WebBrowser1.Document.getElementsByName("Account[dateFrom]")(0).Value = Format(onDate, "dd.mm.yyyy")



отправка данных вебформы
Код: vbnet
1.
Me.WebBrowser1.Document.Forms.submitForm.submit



сохранение содержимого страницы в файл для парсинга
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")

    Dim Fileout As Object
    Set Fileout = fso.CreateTextFile("C:\tmp\outnew" & accID & ".html", True, True)
    Fileout.Write WebBrowser1.Document.documentElement.outerHTML
    Fileout.Close



загрузка файла по полученной в ходе парсинга ссылке, при этом функция использует текущие кукисы веббраузер контрола, т.е. позволяет скачивать со страниц на которые выполнен защищенный вход, но не вызывает диалога куда сохранять файл.

Код: vbnet
1.
Public Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long



вызов
Код: vbnet
1.
    URLDownloadToFile 0, "https://businessinfo.r.....k.ru" & url, "C:\tmp\tmpfile.pdf", 0, 0




могут пригодиться инструменты изучения структуры страницы
firefox -> веб разработка -> инструменты разработчика
функция "исследовать элемент" в выпадающем меню
...
Рейтинг: 0 / 0
немножко про роботов для сбора информации из интернета на webbrowser
    #39762007
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MsDatabaseru,
Спасибо.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / немножко про роботов для сбора информации из интернета на webbrowser
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]