Страницы: 1
RSS
Как спарсить определённую строчку HTML кода в VBA, Нужно незаметно скопировать с сайта одну цифру в переменную VBA или хотя-бы в буфер обмена.
 
Есть сайт, где отображаются определённые цифры, например изменения цен на нефть. В яндекс браузере при нажатии CTRL+SHIFT+С, справа открывается HTML код, где на определённой строчке нужная мне цифра, которая периодически меняется, но строчка остаётся одной и той же.
Как бы её передавать в VBA в нужный момент. Важно, чтобы для сайта это выглядело так, как будто я просто сам сижу через браузер и не использую какие-либо программы.
Пока единственное что придумал, это через VBA тыкать по экрану, делать через Sendkeys Ctrl+ A, а потом CTRL+C и уже потом из буфера обмена искать нужные данные, но это как-то тупо. Кто-нибудь знает варианты поумнее? Или хотя-бы в какую сторону думать?
 
очень похожий текст вы можете получить HTML-запросом по известному вам URL
потом из полученного ответа с помощью RegExp выхватить именно нужный кусок
а чтобы ничего не заподозрили на сайте нужно во время запроса сидеть у монитора и строить умное лицо
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Это понятно. Дело в том что простой запрос по URL не подходит, т.к. информация на нужной странице зависит от моего предыдущего поведения на этой странице, тоесть надо именно влезть в уже открытый браузер, а не подключиться к сайту заново.
 
а тут уже совершенно точно:
ни адреса сайта, ни особенностей получения страницы, которая вам нужна, пока никто кроме вас не знает
и даже, когда эта информация станет доступной - не факт, что все дружно ломонуться добывать нужные значение с непонятной страницы (захотял-ли убивать на это не один час своего времени)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Danya-asg написал:
Кто-нибудь знает варианты поумнее? Или хотя-бы в какую сторону думать?
Добрый день!. Почитайте про GET/POST-запросы ну и как уже выше упомянули RegExp вам в помощь.
 
Настоящий сайт открыто назвать не могу по определённым причинам, могу в личку отправить, да и всё равно там нужные данные без авторизации не высвечиваются. Я наивно думал, что есть какой-то универсальный способ стащить данные из браузера (если они не зашифрованы) из определённой строки кода, или хотя бы весь код отображаемой страницы без выделения всего экрана. Ведь браузер как-то понимает что там надо определённую цифру в определённом месте написать, и ведь там именно текст, а не картинка с текстом. Может какой-нибудь плагин бывает для мазилы/хрома и т.д., который упрощает задачу и что-нибудь копирует в обновляемый текстовый файл? Мне такой найти не удалось, но по идее наверняка что-то подобное придумали.
 
Цитата
Danya-asg написал:
надо именно влезть в уже открытый браузер
Можно залезть при условии, что открываете Вы страницу в Internet Explorer. Там Вам может потребоваться свойство InnerHTML полученной страницы. Но вот чтобы получить эту страницу надо знать как открыта, как называется и т.п.
Код
Sub Get_WEBPage()
    Dim oIE As Object, ShellApp As Object, OW As Object
    Dim sName$, sres$
    Set ShellApp = CreateObject("Shell.Application")
    For Each OW In ShellApp.Windows()
        If (Not OW Is Nothing) Then
            sName = OW.Name
            If sName = "Internet Explorer" Then
                If OW.Locationurl = "https://www.excel-vba.ru/" Then
                    Set oIE = OW
                    Exit For
                End If
            End If
        End If
    Next

    If oIE Is Nothing Then
        MsgBox "Страница не открыта", vbInformation, "www.excel-vba.ru"
    Else
        'получаем текст страницы в формате HTML
        sres = oIE.document.body.innerHTML
    End If
    Set ShellApp = Nothing
End Sub
Если работает в другом браузере(не IE) - ох, нелегкое это дело и неблагодарное. Даже думать не хочу как это делать.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
А когда страницу загрузите, останется скопировать эти функции в отдельный стандартный модуль
https://excelvba.ru/code/html

и добавить в ваш макрос одну строку:
Код
результат = GetTags(HTML_code$, "td", "class", "chgPer", "ConvertToText 1")
Изменено: Игорь - 12.11.2019 18:07:33
 
Здравствуйте, Игорь! Спасибо за, как всегда, интересную ссылку.
Владимир
 
Всем спасибо за дельные ответы. К сожалению в IE нужный сайт не работает. Придумал для яндекс браузера деревянное решение при активном окне браузера:
Код
SendKeys "^{s}" 'сохранить страницу полностью

Sleep (300)

SendKeys "{ENTER}" 'подтвердить сохранение по такому то адресу

Sleep (100)

SendKeys "%{Д}" 'заменить ли прошлый файл? - ДА
ну а потом открыть этот файл прямо в EXEL
Код
Workbooks.Open Filename:= _
        "D:\!Users\User1\Documents\Бизнес\Porno_negrov.com.html"
у меня уже нужная инфа строго в определённой ячейке там можно формулой извлечь с помощью =ПРАВСИМВ(A42;5)
Изменено: Danya-asg - 13.11.2019 00:12:50
 
Цитата
Danya-asg написал:
в IE нужный сайт не работает
пользуйте SeleniumBasic
тут ссылки на перевод документации и туториалы
Страницы: 1
Наверх