-Поиск по дневнику

Поиск сообщений в rss_sql_ru_access_programming

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 16.03.2006
Записей:
Комментариев:
Написано: 4


немножко про роботов для сбора информации из интернета на webbrowser

Вторник, 15 Января 2019 г. 16:50 + в цитатник
наработки из приложения которое стартует по расписанию заходит на страницы интернет банка скачивает выписку, парсит ее и записывает сведения в базу а также скачивает копии платежных документов в пдф.

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

из windows-шедулера запускается vbs скрипт следующего содержания
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




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


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



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

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

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


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


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


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


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


сохранение содержимого страницы в файл для парсинга
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


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

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


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



могут пригодиться инструменты изучения структуры страницы
firefox -> веб разработка -> инструменты разработчика
функция "исследовать элемент" в выпадающем меню

https://www.sql.ru/forum/1307767/nemnozhko-pro-robotov-dlya-sbora-informacii-iz-interneta-na-webbrowser


 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку