Страницы: 1
RSS
Парсинг HTML через VBA
 
Добрый вечер! Ломаю голову над тем как присвоить переменной значение с HTML которое вытаскивается с помощью селектора document.queryselector('#query').inerHTML пытался вот так прошу не обращать внимания на ошибки по памяти писал со смартфона

Код
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds as Long)
Sub test()
Dim category As String
Dim IE As Object

Set IE = Create("InternetExplorer.Application")
IE.Visible = True
IE.Navigate "rmsp.nalog.ru"
Sleep 5000
category = IE.document.queryselector('#query').inerHTML ; Здесь должно присвоится переменной то что отдаст селектор 
MsgBox category
End sub


Напрямую через консоль браузера селектор отдаёт нужны текст все работает хорошо
Изменено: DOMINANT - 03.04.2017 19:04:42
 
DOMINANT, код следует оформлять соответствующим тегом. Ищите такую кнопку и исправьте своё сообщение.
 
DOMINANT, а что именно нужно получить от сайта? Данные по запросу типа ИНН?
 
Jungl, Мне нужно синтаксис поправить чтобы понять  как присваиваивать переменной значение которое отдаёт селектор, можете свой селектор и сайт использовать
Изменено: DOMINANT - 03.04.2017 19:22:54
 
можете мою функцию использовать для поиска любых тегов на веб-странице
http://excelvba.ru/code/html
 
DOMINANT, не знаю что кроется за #query, но примерно так:
Код
Sub test()
Dim category As String
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.Navigate "rmsp.nalog.ru"
category = IE.document.queryselector("a").innertext
MsgBox category
End Sub
 
Jungl, ок, получается у меня только ошибка была в том что в селекторе были 'апострофы' вместо "кавычек"? Подскажите теперь в переменной содержится как я понял текст тега "a"? Как её вставить в ячейку B2 ? Range("B2").Value = category так?
 
да, так
сами бы попробовали - и вопроса бы не было
 
Все работает, подскажите как прописать через If если селектор отдал ошибку тоесть не найден Then продолжить работу? Пробовал вот так не получилось, если нашёл  тоже продолжить работу тоесть не обращать внимания на отсутсвие селектора на странице
Код
Sub test()
category = IE.document.queryselector("a").innertext
If Not IsObject("category") Then Next
End Sub
Изменено: DOMINANT - 04.04.2017 15:10:39
 
IMHO, не совсем корректно использовать:
Код
Sleep 5000

Гораздо интересней, для данной ситуации использовать конструкцию
Код
While IE.ReadyState <> 4: DoEvents: Wend
В этом случае скрипт дождется выполнения загрузки и в процессе ожидания не происходит подвисания программы
Страницы: 1
Читают тему
Наверх