При помощи этого макроса вы можете скачать текст с выбранной страницы веб-сайта: Sub ЗагрузкаТекстаВебСтраницы() Set IE = CreateObject("InternetExplorer.Application"): ' загружаем браузер Internet Explorer On Error Resume Next addr$ = "http://excelvba.ru/services" ' указываем адрес сайта (веб-страницы), текст которой загружаем IE.Navigate addr$ ' загружаем сайт While IE.busy Or (IE.readyState <> 4): DoEvents: Wend ' ждем, пока загрузится страница ' Set ieDoc = IE.Document ' ссылка на открытый документ txt$ = IE.Document.body.innerText ' считываем текст веб-страницы в текстовую переменную '[a1] = txt$ ' помещаем текст веб-страницы на лист Excel IE.Quit: Set IE = Nothing ' закрываем браузер MsgBox txt$, vbInformation, "Текст веб-страницы " & addr$ ' выводим сообщение с текстом с сайта End Sub То же самое - но в виде функции: Function WebPageText(ByVal sURL As String) As String On Error Resume Next Set IE = CreateObject("InternetExplorer.Application"): ' загружаем браузер Internet Explorer IE.Navigate sURL ' загружаем сайт While IE.busy Or (IE.readyState <> 4): DoEvents: Wend ' ждем, пока загрузится страница WebPageText = IE.Document.body.innerText ' считываем текст веб-страницы IE.Quit: Set IE = Nothing ' закрываем браузер End Function Пример использования этой функции для загрузки текста страниц из интернета: Sub ПримерИспользованияФункции_WebPageText() ' считываем текст страницы <a href="http://excelvba.ru/services" title="http://excelvba.ru/services">http://excelvba.ru/services</a> в переменную txt txt = WebPageText("http://excelvba.ru/services") ' получаем путь к папке "Рабочий стол" ПутьКРабочемуСтолу = CreateObject("WScript.Shell").SpecialFolders("Desktop") ' сохраняем текст из переменной txt в файл PageText.txt на рабочем столе SaveTXTfile ПутьКРабочемуСтолу & "\PageText.txt", txt ' открываем созданный текстовый файл в Excel Workbooks.OpenText ПутьКРабочемуСтолу & "\PageText.txt", , , xlDelimited End Sub Function SaveTXTfile(ByVal filename As String, ByVal txt As String) As Boolean On Error Resume Next: Err.Clear Set fso = CreateObject("scripting.filesystemobject") Set ts = fso.CreateTextFile(filename, True) ts.Write txt: ts.Close SaveTXTfile = Err = 0 Set ts = Nothing: Set fso = Nothing End Function PS: Если вас интересует ИСХОДНЫЙ КОД страницы - используйте эту функцию: http://excelvba.ru/code/GetHTTPResponse
|
|||||||

Комментарии
Спасибо Вам за ответ!
Видимо у меня что-то с настройками? Посмотрю.
Я делал аналогично - загнал в переменную адрес. Результатом было ''.
Огромное спасибо за совет, поискать по форуму "Планеты" - с лёту в поисковиках не нашел. Надо было быстро получить координаты. Сначала хотел воспользоваться json, но не смог добраться даже да текста. Надеюсь, на форуме найду.
Еще раз благодарю за очень оперативный ответ!
Здравствуйте, Антон.
Я взял вышеопубликованную функцию ЗагрузкаТекстаВебСтраницы,
в одной строке кода заменил адрес сайта:
addr$ = "http://maps.google.com/maps/api/geocode/xml?address=London&sensor=false"
И увидел сообщение с ожидаемым результатом.
Так что не знаю, в чем проблема, - у меня всё работает.
PS: Я бы на вашем месте поискал готовое решение - на форуме «Планеты Excel» встречал как-то 2 решения вашей задачи
(определение координат по адресу, путем парсинга XML с подобный веб-страниц)
Здравствуйте!
Спасибо за Ваш отличный сайт!
Я попытался воспользоваться кодом с этого примера.
Планировал прочитать текст со странички по адресу "http://maps.google.com/maps/api/geocode/xml?address=London&sensor=false"
Но в переменную от объект WebPageText = IE.Document.body.innerText ничего не записывается. Подскажите, в чем может быть проблема?
Если открывать линк в IE, то результат отображается.
Спасибо!
Спасибо.. Link.innerText - это то что нужно..А я в справке это свойство не нашёл.. Ещё раз спасибо..
Судя по результату, link.nameProp возвращает не надпись на ссылке, а что-то другое:
(я плохо ориентируюсь в объектной модели DOM)
Результат:
Насколько мне известно, для получение текста ссылки надо использовать свойство Link.innerText
Результат:
Спасибо..Всё получается.
А надпись на этой ссылке можно получить свойством link.nameProp ??
Спасибо за ответ..
Пример кода получения списка ссылок можете найти в этой программе - там анализируется исходный текст веб-страницы в поисках текста, соответствующего шаблону.
Ну а в общем случае, после загрузки веб-страницы, надо обратиться к свойству Links веб-страницы:
' загружаем браузер Internet Explorer
Set IE = CreateObject("InternetExplorer.Application"):
' указываем адрес сайта (веб-страницы), на которой будем искать ссылки
addr$ = "http://excelvba.ru/services"
IE.Navigate addr$ ' загружаем страницу
While IE.busy Or (IE.readyState <> 4): DoEvents: Wend ' ждем, пока загрузится страница
For Each link In IE.Document.Links ' перебираем все ссылки на странице
' выводим номер и адрес гиперссылки
n = n + 1: Debug.Print "Ссылка №" & n, link.href
Next
IE.Quit: Set IE = Nothing ' закрываем браузер
End Sub
Результат увидите в окне Immediate:
Хорошая програмка. Спасибо. А как можно загрузить с вэб-страницы гиперссылки?? Спасибо за ответ..
Отправить комментарий