-
Здравствуйте!
Столкнулся с такой проблемой, вроде бы простая, но решить не могу. Я нахожу нужный мне элемент в TwebBrowser и хочу получить доступ к его реальному HTML-коду. Вместо этого получаю через outerHTML код отформатированный и «исправленный». Т.е. вместо
[code] <a href="index.php?pid=yes&id=15844" title="Перейдите сюда">Перейдите сюда</a> [/code]
Получаю:
[code] <A title="Перейдите сюда" href="index.php?pid=yes&id=15844">Перейдите сюда</A> [/code]
Мало того, что изменена последовательность атрибутов, так еще и зачем-то символ & внутри кавычек блока HREF заменен на (&) !
Может кто-нибудь из опытных людей подскажет как быстро найти нормальный код, не хочется делать через одно место (т.е. искать внутри исходного кода используя части из строки outerHTML)?
-
> так еще и зачем-то символ & внутри кавычек блока HREF заменен > на (&) !
где это?
-
где это?
В смысле?
В Delphi 2005>TWebBrowser>HTMLElement.outerHTML
или в смысле - где меняет? Тут, в исходном тексте (через борузер) href="index.php?pid=yes&id=15844" стоит & для разделения перемнных, а outerHTML почему-то его заменяет на &
Ну это не так важно, просто есть ли способ быстро найти настоящий код, если выбран нужный элемент? Или только outerHTML?
-
> стоит & для разделения перемнных, а outerHTML почему-то > его заменяет на &
не вижу разницы...
-
Точно, я копировал, не заметиил. Там в верхнем примере & а в нижнем на самом деле & amp ; , просто в этом форуме он меняет его на & автоматом, хотя я и поставил теги [CODE]
Опять же, это не так важно, хотя и напрягает. Все равно, меняются местами атрибуты, и найти в исходном коде, даже через UpperCase не получается:
в исх. тексте: сначала href, потом title, а outerHTML преобразовывает так, чтобы сначала шел title, потом остальное. Понятно, что для данного примера можно было бы выкрутится, а вот для остальных случаев - сложно (когда много атрибутов). Знать бы хотя по какому принципу он их переставляет
-
> Все равно, меняются местами атрибуты
так атрибуты надо получать не из текста, а из DOM: element.getAttribute('title')
-
> так атрибуты надо получать не из текста, а из DOM: element. > getAttribute('title')
Понятно. Но мне нужно получить сам кусок кода от <a...> до </a>, а не атрибуты. Причем именно в том виде, как он есть в исходном тексте HTML. Для парсинга это нужно
-
а зачем парсинг, если удобнее через объектную модель?
-
Ну, во-первых у меня парсер уже готов практически, при этом именно на исходном тексте рабтает. Просто хотел его сделать более удобным для настройки.
Во-вторых, через s1 := IdHTTP1.Get(sUrl) - быстрее идет загрузка кода, чем через WebBrows и его обработку.
Ну и плюс DOM еще этот & amp; пихает и еще что-то меняет.
-
парсить можно и через регулярные выражения. И непонятно, как IdHTTP1.Get(sUrl) может переставлять аттрибуты? Он выдает то, что выдает веб-сервер
-
> И непонятно, как IdHTTP1.Get(sUrl)
Он как раз выдает код как есть, а WebBrowser -> HTMLElement.outerHTML - выдает исходный код в другом виде, отформатированом. Соотв. мне нужно, как я написал в начале темы, найти реальный исходный код выбранного (пользователем) элемента в WebBrowser.
-
ни фига не понял... сам же сказал, что "парсер уже готов практически" и "через s1 := IdHTTP1.Get(sUrl) - быстрее идет загрузка кода"... зачем тогда парсить веб-браузер?
-
зачем тогда парсить веб-браузер
Пользователь тыкает на конкретный элемент в окне браузера: - на ссылку, картинку, текст и т.д. Я нахожу этот желмент через DOM, мне нужно показать реальный исходный текст его в поле TMemo например. Как это сделать?
-
> Как это сделать?
ну, так же как и сделал - outer/innerHTML а вот как браузер этот код обработает - тут мы уже не властны. Хочешь html как он есть - тащи его прямо с сервера
-
Ясн, спасибо. Думал, может все-таки WebBrows хранит где-то соотв. между преобразованным кодм и исходным
|