![]() |
|
Модераторы: Akina |
![]()
|
|
| svch |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
Добрый день !
Задача у меня вот какая: надо с страницы выдернуть текст. Подошел бы HTML, но дело в том, что часть контента формируется с помощью JS, и соотв-но в HTML-коде этого контента нет. ResponseText из Msxml2.XMLHTTP возвращает почему-то HTML. Получилось взять текст только с помощью InternetExplorer.Application, но он как-то уж очень медленно работает. Если у кого есть идеи - буду очень признателен. С уважением, Сергей. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
MSInet Control получает текст непосредственно от сервера. Ему JS и исполнять-то нечем...
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| svch |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
Ну сервер-то отдаст что надо. А вот как получить текст, исполняемый в браузере ? Я так понимаю, что только создав что-то типа InternetExplorer.Application.
Честно говоря думал всегда, что ResponseText возвращает текст, а ResponseHTML соотв-но код страницы. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Ну русским же языком сказал - на форму MS Inet Control, Inet1.Execute URL, "GET" и выгребай свой яваскрипт -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| svch |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
sText содержит HTML код. А как можно текст страницы получить ? Я все таки, наверное, не до конца понимаю. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| svch |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
Говорит, что не хватает аргументов Inet1.Execute(URL, "GET")
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Значит, у тебя референс на Microsoft Internet Transfer Control 6.0 улетел - восстанови. Проект - Компоненты.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| svch |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
Вот тут написано, что у метода Execute (для HTTP) должно быть 4 аргумента
http://read.excode.ru/art696p1.html |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Версию system32\msinet.ocx озвучьте плиз
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| svch |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
![]() Я, скорее всего что-то не так делаю, потому как в Access работает и такой код:
т.е. с единственным аргументом. И Inet1.GetChunk(1024, icString) все равно возвращает (в Access) HTML-код. |
|||
|
||||
| svch |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
В общем вот такая вот ситуация: работает только с таким кодом
Но все равно возвращает не текст с страницы, а ее HTML-код. Ай нид хелп. Буду очень признателен. С уважением, Сергей. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Вот что получаю я...
Версия msinet.ocx - 6.00.8862, wininet.dll - 6.00.3790.4186 (srv03_sp2_qfe.071108-1306) Присоединённый файл ( Кол-во скачиваний: 40 )
1.JPG 191,81 Kb-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| svch |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
Я тему специально назвал:
Как можно получить текст с web-страницы ? Не HTML-контент, а именно текст. Тот пример, что Вы здесь привели возвращает именно HTML-код, среди которого, конечно, есть ЧАСТЬ текста страницы. Примером может служить всем известный Яндекс-директ, который на странице в браузере виден, а в HTML-коде его нет, только ява-скрипт. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Упс... вижу одно, думаю другое... сорри, бывает.
Тады чуть позже. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
-------------------- Я желаю всем Счастья! |
|||
|
||||
| svch |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
Извините, а можно ли полный код представить ?
Ну что-то вроде:
Огромное Вам спасибо. С уважением, Сергей. |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
Так полнее некуда! ;)
Кладешь на форму WebBrowser(WebBrowser1) и пользуешься кодом. Добавлено через 10 минут и 6 секунд Простите, понял свою ошибку - исправляю: Подключаешь к проекту компонент "Microsoft Internet Controls" (ieframe.dll). Кладешь на форму новый экземпляр объекта WebBrowser с именем WebBrowser1. Используешь код. -------------------- Я желаю всем Счастья! |
|||
|
||||
| svch |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
Вот, что у меня кажет :(
![]() Это сообщение отредактировал(а) svch - 12.3.2008, 14:11 |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
У вас на форме нет созданного экземпляра компонента. В этом проблема.
-------------------- Я желаю всем Счастья! |
|||
|
||||
| svch |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
Ну как же нет, если даже навигация прошла и этот компонент получил html-код сайта ?
|
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
Странно. У меня на VB6 работает.
Попробуйте подключить рефференс того, чему у вас соответствует Body. -------------------- Я желаю всем Счастья! |
|||
|
||||
| svch |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
А вы не могли бы выложить сюда нужные файлы (для регистрации и пример кода) ?
У меня просто VS 2005, я только начинающий ... и "подключить рефференс того, чему у вас соответствует Body" - не знаю, что это значит. Спасибо. С уважением, Сергей. |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
-------------------- Я желаю всем Счастья! |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Ну не до такой же степени, чтобы ошибаться разделом... Тема перенесена -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Перемещено в VB .NET.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| svch |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
В общем что-то начало вырисовываться ...
В браузере открывается страница, текст получить могу. Но есть одно "но". Страниц этих у меня довольно много, и я сделал цикл по таблице с урлами. При переходе на следующую запись в таблице я гружу текущий урл в браузер и вот тут получается затык. Дело в том, что надо как-то дождаться, пока страница полностью загрузится и уже после получать с нее текст. Пытался как-то обрабатывать WebBrowser_DocumentComplete и WebBrowser.Busy, но как-то безуспешно. Помогите добить до конца уж ... С уважением, Сергей. З.Ы. Может все таки тему обратно в VB6 перенести ? Я таки его себе установил. |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
Загрузку каждого последующего адреса нужно вызывать в конце процедуры WebBrowser_DocumentComplete, после извлечения текста страницы.
Попроси Akina. -------------------- Я желаю всем Счастья! |
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 7 Всего: 186 |
Ну вы даёте
Перемещаю обратно. |
|||
|
||||
| svch |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
А как его там вызывать-то ? Если использовать что-то похожее на это.
С уважением, Сергей. |
||||
|
|||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
Ну хотя бы так:
Это сообщение отредактировал(а) Naghual - 13.3.2008, 17:25 -------------------- Я желаю всем Счастья! |
|||
|
||||
| svch |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
А по какой причине
может возвращать пустое значение ? Хотя страница в браузер грузится. |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
Ну например, если страница из фреймов.
-------------------- Я желаю всем Счастья! |
|||
|
||||
| svch |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
Нет, фреймов нет. Что-то все равно я не так делаю :(
Выдается пустой MsgBox, хотя если открыть этот урл по-простому
то все отображается нормально. Бьюсь, как рыба об лед. Решение где-то совсем уже рядом. С уважением, Сергей. |
||||
|
|||||
| AlexChuntonov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 14.3.2008 Репутация: нет Всего: нет |
Народ! Похожая проблема...
Необходимо отслеживать изменеие некое инфы на странице. Структура документа сильно фреймованная. До нужного фрейма посредством DOM добрался. Свойство innerHTML и innerText не возвращает то, что нужно, ибо контент динамический... Скрипт генерит контент весьма кудряво. Да и сам скрипт, генерящий контент, генерится многоступенчато другим скриптом из другого фрейма. Ну вот такой вот веб-программер извращенец... НУЖНО: нужно то, что показывается по меню правой кнопки, пункт "Исходный текст" Можно конечно и хэндл окна получить, и мессиджи послать, и отловить хэндл окна просмотра исходного кода, и опять мессиджи послать, и текст выгрести... Но я не верю, что через DOM или объектную модель эту инфу извлечь невозможно! Я просто не понимаю... Да и DOM в объекте WebBrowser урезанный какой-то! WebBrowser.Document.all.frames(i).name возвращает, а... WebBrowser.Document.all.frames(i).innerHtml - кричит, что неподдерживаемое свойство! Чоза? Это сообщение отредактировал(а) AlexChuntonov - 14.3.2008, 15:33 |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
Так у Вас, батенька, нет понимания алгоритма того что Вы же сами и делаете. Читайте основы.
Вот как примерно должно быть:
AlexChuntonov, пожалуйста, создайте отдельную тему. Это сообщение отредактировал(а) Naghual - 14.3.2008, 15:31 -------------------- Я желаю всем Счастья! |
|||
|
||||
| svch |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
Да, спасибо большое за поправку.
Но в данном виде код с моими урлами не работает. Такое ощущение, что
срабатывает раньше, чем страница полностью загружена. Я сделал отдельную кнопку с этим событием, загрузил в браузер один из своих урлов, дождался загрузки. Нажал на кнопку и получит нужный текст. Почитал, что есть события Busy и State. Busy не советуют, а вот как пользоваться State - я найти не могу. С уважением, Сергей. |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
В ошибках рождается истина!
Проконтролруйте, не срабатывает ли событие DocumentComplete несколько раз для одного УРЛа. Если да - продебагте все состояния State и Busy для выяснения закономерности. Вариантов масса - пробуйте. -------------------- Я желаю всем Счастья! |
|||
|
||||
| svch |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
Думаю, что нет. Сообщение выдается один раз на один урл. Просто контент страницы, как я говорил, сожержит яву-скрипт, который в свою очередь грузит доп.контент (с другого сайта). Поэтому, может, скачав вель локальный контент и происходит событие WebBrowser1_DocumentComplete ? А вот как дождаться, пока вся страница будет загружена ? Ставил следующий код в WebBrowser1_DocumentComplete:
Ходит по этому циклу непереставая С уважением, Сергей. |
||||
|
|||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
УРЛ в студию!
-------------------- Я желаю всем Счастья! |
|||
|
||||
| svch |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
Урл в личку ушел.
|
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
Ок. Я посмотрел на него.
Вопрос: Какой текст вы хотите получить с этой страницы, если там НЕТ текста! Все формируется динамической графикой. Это сообщение отредактировал(а) Naghual - 14.3.2008, 18:39 -------------------- Я желаю всем Счастья! |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
Я думаю над вашим вопросом...
Добавлено через 14 минут и 51 секунду Вот что придумалось на текущий момент:
Пробуйте, пишите. -------------------- Я желаю всем Счастья! |
|||
|
||||
| svch |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
В общем пляски с бубнами и помощь участников форума привела меня вот к чему:
в Нете я нашел события, которые есть у компонента WebBrowser, прописал их в код и смотрел, какое событие за каким срабатывает. У меня получилось, что всегда на последнем месте WebBrowser1_CommandStateChange, на него я свой обработчик и поставил. Событие срабатывает несколько раз за навигацию, поэтому надо еще отловить WebBrowser1_DownloadComplete (возможно, это мой частный случай)
С уважением, Сергей. |
|||
|
||||
| svch |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
Появился еще трабл :(
При загрузке проги, переход по урлам нормальный и быстрый. Но после 5-10 урлов начинаются тормоза, которые только увеличиваются. Что нужно сделать с браузером, чтоб этого не происходило ? Память как-то очистить или еще что ? Большое спасибо. С уважением, Сергей. |
|||
|
||||
| svch |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
Уважаемые гуру ?
Не обделите вниманием Буду ОЧЕНЬ признателен. |
|||
|
||||
| svch |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
Ну в общем пришлось сделать отдельных два exe-шника и из одного запускать другой. Иначе память съедается.
|
|||
|
||||
| Kaktusjara |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 11.8.2009 Репутация: нет Всего: нет |
старая тема, сори что поднимаю, но ради этого только зарегался.
насчет пустого msgbox, вместо содержимого страницы: Короче мой способ прост до безобразия. В самом начале, например при форм.лоад открываем в браузере about:blank, после чего уже вызываем нужную нам страницу. Когда вы только вызвали страницу сразу запрашивать код или содержимое бесполезно - страница не успевает загрузиться. Но раз мы загрузили бланк (чистая страница), то после вызова интересующей нас странички перед выводом msgbox'а проверить, чтобы WebBrowser1.Document.body.innerText <> "", и проверку зациклить, пока не получим содержимое страницы. Надеюсь кому-то это поможет. |
|||
|
||||
| DrBoom |
|
|||
|
QIP VB-SDK Developer ![]() Профиль Группа: Участник Сообщений: 83 Регистрация: 19.2.2006 Репутация: нет Всего: нет |
||||
|
||||
| fduck |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 14.8.2009 Репутация: нет Всего: нет |
Читал тему,тк у меня подобный вопрос.
Сделал как описывалось выше! Получилось только вывести ВЕСЬ текст в text,а как вывести отдельный текст в text? Например,IP,на 2ip.ru. Как быть? |
|||
|
||||
| DrBoom |
|
||||||||||||||
|
QIP VB-SDK Developer ![]() Профиль Группа: Участник Сообщений: 83 Регистрация: 19.2.2006 Репутация: нет Всего: нет |
Для этого нужно понимать, что вы хотите загружать и где это находится. А для этого Вам нужно понять объектную модель DOM в HTMLе. Привожу несколько примеров, а нужный выбирайте сами. 1. Если известно ID текстового поля:
То получаем значения из него так:
2. Если известно Name текстового поля:
То получаем значения из него так:
3. Если известно Name текстового поля и ID формы:
То получаем значения из него так:
ЗЫ. Если неизвестен ID формы, то можно получить её из коллекции forms для объекта document. 4. Текстовое поле можно тж. найти в коллекции all для объекта document. 5. Другими элементами также можно манипулировать, например, с помощью свойств innerHTML, innerTEXT, outerHTML. Чтобы было понятнее, попробуйте загрузить какую-нибудь страницу и запустить код, а после поэкспериментировать с ним:
Это сообщение отредактировал(а) DrBoom - 16.8.2009, 19:11 |
||||||||||||||
|
|||||||||||||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |