powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как вытащить средствами VBA текст html?
25 сообщений из 50, страница 1 из 2
Как вытащить средствами VBA текст html?
    #36946451
Komil_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VBA:
Можно ли средствами VBA вытащить текст любого произвольного сайта в формате html (т.е. достаточно в виде только текста)? Само собой разумеется, что для этого требуется как минимум свободный доступ к и-нету, а также существование (в рабочем состоянии) сайта.
Предполагается следующее:
Имеется поле, где указывается адрес сайта.
При нажатии юзером кнопки VBA вытаскивает в виде текста сам сайт и сохранит как отдельный файл там же где проект VBA находится. При этом не требуется вытаскивание рисунков, звуков, фильмов и т.д. (так как эти объекты имеют достаточно "большой вес").


В и-нете порылся, нашёл "MSXML". Но как им пользоваться в VBA не умею. Может кто-нибудь знает примерчик? Какую-нибудь ссылочку?
Заранее благодарю за любую помощь!
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36946479
.Михаил.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36946752
Komil_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
.Михаил.,

Спасибо за ссылку. Но насколько я понял, там речь идёт об экспорте данных. А мне нужно наоборот, импорт данных. Как это сделать? Что-то не получается у меня.
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36946815
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрите здесь, может подойдет
Парсинг с авторизацией в https
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36946918
Komil_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mds_worldПосмотрите здесь, может подойдет
Парсинг с авторизацией в https

Ваш код кажется это то, что мне надо.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub httpText()
    Dim s As New WinHttp.WinHttpRequest
    Dim ReturnStr As String, FileNumber, url
    
    url = "http://sql.ru/forum/actualpost.aspx?bid=4"
    Debug.Print url
    s.Open "GET", url
    s.Send
    ReturnStr = s.ResponseText
    Debug.Print ReturnStr
End Sub

Попробовал. Вроде работает! Спасибо БОЛЬШОЕ!!!!

А можно ещё один вопросик? У меня этот код сработал слегка медленно, видимо "WinHttp" пользуется средствами Internet Explorer. А можно ли каким то макаром заставить смотреть в сторону Firefox Mozilla/5.0? Мне кажется Firefox намного шустрее. Или я не угадал проблему скорости?
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36947037
Komil_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Странно, но возникла куда более серьёзная проблема. Оказывается "WinHttp" не со всех сайтов вытаскивает текст нормально. В некоторых случаях выходит подобная абракадабра:
Код: plaintext
1.
2.
3.
        <span style="font-weight: bold;">?????µ ??N? ??N??µ??????N???N??°?µN??µ N?N??°????N?N? N??±?µN??µ?¶?µ????N??</span><br />
        <div style="font-style: oblique;">??????N? ??N? ???????µN?N??µN??µ?</div>
        <!-- div>???°??N?N?N????µ: 2011-03-15</div -->

Как бороться с этим?
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36947067
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Komil_
> Как бороться с этим?


Научиттся работать с юникодом :)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36947106
Komil_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь Горбонос
> Автор: Komil_
> Как бороться с этим?


Научиттся работать с юникодом :)



Не могли бы помочь, как можно "WinHttp" познакомить с юникодом? Пытаюсь переключить на юникод, а он не в какую. Подозреваю, что у него нет такого свойства. Если это так, то очень, очень жаль. А мог быть идеальным решением для моего случая.
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36947172
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WinHttp не должен и не занимается разбором кодировок. Его задача получить то, что отдает сервер. Что с этим делать дальше — проблема автора. А автор даже не сообщает, что он собирается делать.
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36947308
Komil_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariyWinHttp не должен и не занимается разбором кодировок. Его задача получить то, что отдает сервер. Что с этим делать дальше — проблема автора. А автор даже не сообщает, что он собирается делать.

Как не сообщил что делать? Сохранить как отдельный файл. Можно простой текстовый файл.
Т.е. Вы имеете ввиду если я сразу сохраню в файл, то там будет всё О.К.?
Щас попробую._
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36947328
Komil_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал сразу сохранить в файл. Нет, не получился. Всё равно выходит абракадабра.
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36947345
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Komil_Странно, но возникла куда более серьёзная проблема. Оказывается "WinHttp" не со всех сайтов вытаскивает текст нормально. В некоторых случаях выходит подобная абракадабра:
Код: plaintext
1.
2.
3.
        <span style="font-weight: bold;">?????µ ??N? ??N??µ??????N???N??°?µN??µ N?N??°????N?N? N??±?µN??µ?¶?µ????N??</span><br />
        <div style="font-style: oblique;">??????N? ??N? ???????µN?N??µN??µ?</div>
        <!-- div>???°??N?N?N????µ: 2011-03-15</div -->

Как бороться с этим?

анализировать на

<META content="text/html; charset=windows-1251" http-equiv="Content-Type">
--------------------------------------------------------------------utf-8
--------------------------------------------------------------------utf-16
............
и соответственно обрабатывать
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36947425
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКАKomil_Странно, но возникла куда более серьёзная проблема. Оказывается "WinHttp" не со всех сайтов вытаскивает текст нормально. В некоторых случаях выходит подобная абракадабра:
Код: plaintext
1.
2.
3.
        <span style="font-weight: bold;">?????µ ??N? ??N??µ??????N???N??°?µN??µ N?N??°????N?N? N??±?µN??µ?¶?µ????N??</span><br />
        <div style="font-style: oblique;">??????N? ??N? ???????µN?N??µN??µ?</div>
        <!-- div>???°??N?N?N????µ: 2011-03-15</div -->

Как бороться с этим?

анализировать на

<META content="text/html; charset=windows-1251" http-equiv="Content-Type">
--------------------------------------------------------------------utf-8
--------------------------------------------------------------------utf-16
............
и соответственно обрабатывать

META тэга может и не быть
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36947508
Komil_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА
анализировать на

<META content="text/html; charset=windows-1251" http-equiv="Content-Type">
--------------------------------------------------------------------utf-8
--------------------------------------------------------------------utf-16
............
и соответственно обрабатывать

Анализировать как? Что это? Куда мне вставить подобный текст?
Я понимаю, что проблема в Unicode, но не понимаю как решить.



P.S.
сейчас мне необходимо отключиться из и-нета. я не смогу ответить до завтра. если не отвечу, то не сочтите за невежливость. заранее извиняюсь.
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36949168
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Komil_,
опять эти библиотеки
чтобы не выделяло в строке
Dim s As New WinHttp.WinHttpRequest
Какую библиотеку надо подключить???
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36949189
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эндрю, а ты вообще сообщения читаешь? по ссылкам ходишь? с гуглем хоть немного дружишь?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36949203
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,
Dim s As New WinHttp.WinHttpRequest 'библиотека Microsoft WinHTTP Services, version 5.1
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36949204
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,

'Tool.References... Add a reference to Microsoft WinHTTPServices
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36949383
Komil_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Жалко, что WinHTTP не дружит с UNICODE. Очень жаль.
А так если сайт англоязычный, то вполне подойдёт. Но беда в том, что мне как назло именно русский текст и нужен.
Ладно. Буду смотреть на сторону MSXML2. Надеюсь он менее капризный.
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36950359
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Komil_, потом выложите скрипт пожалуйста
может Вам это нужно Текст_на_странице_WEB = IE.Document.body.innerText 'текст на WEB странице ????????
И если я не ршобаюсь этот скрипт не весь текст с страницы берёт в переменную, почему???
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36950361
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ршобаюсь это ошибаюсь
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36950641
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Komil_Попробовал сразу сохранить в файл. Нет, не получился. Всё равно выходит абракадабра.Попробуйте сохранять не в текстовый, а в .DOC-файл. Ворд умеет справляться с юникодом.
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36950804
Komil_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем кто участвовал.
Я в и-нете поковырял и нашёл одну процедурку (в каком сайте забыл, что-то вроде excelplaneta что ли, не помню). Вообщем видоизменил и получился что надо! По крайнем мере именно то, что мне надо!

А код такой (если кому пригодится)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Sub GetInformationFromINet()
    Dim oHttp As Object
    Dim strURL As String
    
    strURL = "здесь необходимо указать адрес сайта, что то вроде http://mail.ru/"
    
    On Error Resume Next
    Set oHttp = CreateObject("MSXML2.XMLHTTP")
    If Err.Number <>  0  Then
        Set oHttp = CreateObject("MSXML.XMLHTTPRequest")
    End If
    On Error GoTo  0 
    If oHttp Is Nothing Then
        MsgBox "Не удалось инициализировать объект MSXML!"
        Exit Sub
    End If
    
    oHttp.Open "GET", strURL, False
    oHttp.Send
    
    Debug.Print oHttp.ResponseText
    Set oHttp = Nothing
    MsgBox "Данные успешно импортированы!", vbInformation
End Sub

Автор процедуры специально использовал тип данных "Object" вместо подключения к библиотеке "MSXML2" (т.к. у конечного пользователя может и не быть такой библиотеки). Проверил, работает и без подключения библиотеки. Очень простой код, но рабочий. С unicode нет проблем!
То, что предложил Михаил, в принципе примерно почти тоже самое, правда нужно было там слегка убрать лишнее.
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36950861
.Михаил.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Komil_ Автор процедуры специально использовал тип данных "Object" вместо подключения к библиотеке "MSXML2" (т.к. у конечного пользователя может и не быть такой библиотеки). Проверил, работает и без подключения библиотеки.
Если у пользователя нет зарегестрированных в реестре данных библоитек, то использование функции CreateObject даст результат:
Код: plaintext
1.
MsgBox "Не удалось инициализировать объект MSXML!"
С другой стороны: прямое подключение к проекту библиотеки не требует ее регистрации в реестре. В некоторых случаях, когда есть пользовательские ограничения, регистрация библиотеки невозможна.
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36950870
.Михаил.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Komil_А код такой (если кому пригодится)
После выполнения метода
Код: plaintext
1.
oHttp.Send
я бы сделал проверку на текущее состояние загрузки данных readyState и результата ответа на запрос status - загляни обязательно сюда . Коды http-ответа здесь .
...
Рейтинг: 0 / 0
25 сообщений из 50, страница 1 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как вытащить средствами VBA текст html?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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