Конференция "Сети" » Реальный исходный код выбранного элемента HTMLElement (outerHTML
 
  • msserher © (08.04.13 14:30) [0]
    Здравствуйте!

    Столкнулся с такой проблемой, вроде бы простая, но решить не могу. Я нахожу нужный мне элемент в 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)?
  • brother © (08.04.13 14:37) [1]
    > так еще и зачем-то символ & внутри кавычек блока HREF заменен
    > на (&) !

    где это?
  • msserher © (08.04.13 15:00) [2]
    где это?

    В смысле?

    В Delphi 2005>TWebBrowser>HTMLElement.outerHTML

    или в смысле - где меняет? Тут, в исходном тексте (через борузер) href="index.php?pid=yes&id=15844"  стоит & для разделения перемнных, а outerHTML почему-то его заменяет на &

    Ну это не так важно, просто есть ли способ быстро найти настоящий код, если выбран нужный элемент? Или только outerHTML?
  • brother © (08.04.13 15:27) [3]
    > стоит & для разделения перемнных, а outerHTML почему-то
    > его заменяет на &

    не вижу разницы...
  • msserher © (08.04.13 15:44) [4]
    Точно, я копировал, не заметиил. Там в верхнем примере & а в нижнем на самом деле & amp ;  , просто в этом форуме он меняет его на & автоматом, хотя я и поставил теги [CODE]

    Опять же, это не так важно, хотя и напрягает. Все равно, меняются местами атрибуты, и найти в исходном коде, даже через UpperCase не получается:

    в исх. тексте: сначала href, потом title, а outerHTML преобразовывает так, чтобы сначала шел title, потом остальное. Понятно, что для данного примера можно было бы выкрутится, а вот для остальных случаев - сложно (когда много атрибутов). Знать бы хотя по какому принципу он их переставляет
  • clickmaker © (08.04.13 15:48) [5]
    > Все равно, меняются местами атрибуты

    так атрибуты надо получать не из текста, а из DOM: element.getAttribute('title')
  • msserher © (08.04.13 15:50) [6]

    > так атрибуты надо получать не из текста, а из DOM: element.
    > getAttribute('title')


    Понятно. Но мне нужно получить сам кусок кода от <a...> до </a>, а не атрибуты. Причем именно в том виде, как он есть в исходном тексте HTML. Для парсинга это нужно
  • clickmaker © (08.04.13 15:55) [7]
    а зачем парсинг, если удобнее через объектную модель?
  • msserher © (08.04.13 16:05) [8]
    Ну, во-первых у меня парсер уже готов практически, при этом именно на исходном тексте рабтает. Просто хотел его сделать более удобным для настройки.

    Во-вторых, через s1 := IdHTTP1.Get(sUrl) - быстрее идет загрузка кода, чем через WebBrows и его обработку.

    Ну и плюс DOM еще этот & amp; пихает и еще что-то меняет.
  • clickmaker © (08.04.13 16:07) [9]
    парсить можно и через регулярные выражения. И непонятно, как IdHTTP1.Get(sUrl) может переставлять аттрибуты? Он выдает то, что выдает веб-сервер
  • msserher © (08.04.13 16:23) [10]

    > И непонятно, как IdHTTP1.Get(sUrl)


    Он как раз выдает код как есть, а WebBrowser -> HTMLElement.outerHTML - выдает исходный код в другом виде, отформатированом. Соотв. мне нужно, как я написал в начале темы, найти реальный исходный код выбранного (пользователем) элемента в WebBrowser.
  • clickmaker © (08.04.13 16:26) [11]
    ни фига не понял... сам же сказал, что "парсер уже готов практически" и "через s1 := IdHTTP1.Get(sUrl) - быстрее идет загрузка кода"...
    зачем тогда парсить веб-браузер?
  • msserher © (08.04.13 16:51) [12]
    зачем тогда парсить веб-браузер

    Пользователь тыкает на конкретный элемент в окне браузера: - на ссылку, картинку, текст и т.д. Я нахожу этот желмент через DOM, мне нужно показать реальный исходный текст его в поле TMemo например. Как это сделать?
  • clickmaker © (08.04.13 16:56) [13]
    > Как это сделать?

    ну, так же как и сделал - outer/innerHTML
    а вот как браузер этот код обработает - тут мы уже не властны. Хочешь html как он есть - тащи его прямо с сервера
  • msserher © (08.04.13 17:04) [14]
    Ясн, спасибо. Думал, может все-таки WebBrows хранит где-то соотв. между преобразованным кодм и исходным
 
Конференция "Сети" » Реальный исходный код выбранного элемента HTMLElement (outerHTML
Есть новые Нет новых   [118665   +34][b:0][p:0.001]