Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

TWebBrowser портит ссылки в коде страницы   Найти похожие ветки 

 
Pcrepair ©   (2012-02-25 18:53) [0]

Добрый день
есть общеизвестный код вывода закачанного кода ХТМЛ-страницы при помощи TWebBrowser (RAD2010)

procedure TForm1.Button1Click(Sender: TObject);
var
 URL, Flags, TargetFrameName, PostData, Headers: Olevariant;
 MS : String;
begin
 URL := Edit1.Text;
 Flags := 0;
 TargetFrameName := 0;
 Postdata := 0;
 Headers := 0;
 WebBrowser1.Navigate(URL, Flags, TargetFrameName, PostData, Headers);
 repeat
   Application.ProcessMessages;
 until WebBrowser1.ReadyState >= READYSTATE_COMPLETE;
 if WebBrowser1.Document <> nil then
 MS := (WebBrowser1.Document as IHTMLDocument2).body.innerhtml;
 begin
     Memo1.Clear;
     Memo1.Text := MS;
   end;
end;
initialization
Set8087CW($133F);

Код позволяет вывести в МЕМО код страницы после обработки ЖАБА-скриптов. однако при этом искажаются ссылки.
Код страницы, закачанный idHTTP (только ссылки)
<a href="http://mail.yandex.ru"onclick="c(this,17,1080)">Войти в почту</a>
<a href="http://www.yandex.ru" onclick="c(this,17,1083)">Яндекс</a>
<a href="http://www.artlebedev.ru" onclick="c(this,17,1084)">Студия Артемия Лебедева</a>
Код страницы, закачанный TWebBrowser
<A onclick=c(this,17,1080) href="http://mail.yandex.ru">Войти в почту</A>
<A onclick=c(this,17,1083) href="http://www.yandex.ru">Яндекс</A>»</P>
<A onclick=c(this,17,1084) href="http://www.artlebedev.ru">Студия Артемия Лебедева</A>
Вопрос:
что нужно изменить в коде, чтобы ссылки не портились, конечно если это возможно
Всем ответившим спасибо.


 
sniknik ©   (2012-02-25 20:01) [1]

насколько вижу ссылки совершенно не "испорчены"... один в один.
или имеется ввиду вот это странное »</P> в конце второй? или порядок атрибутов/пропись в именах тегов? так это совершенно пофигу.

кстати это не закачанный код, а уже разобранный в DOM и "возвернутый" обратно...


 
Pcrepair ©   (2012-02-25 20:18) [2]

закачаный код
<a href="http://mail.yandex.ru"onclick="c(this,17,1080)">Войти в почту</a>
разобраный код
<A onclick=c(this,17,1080) href="http://mail.yandex.ru">Войти в почту</A>
это не один в один, если внимательно присмотреться


 
sniknik ©   (2012-02-25 21:05) [3]

порядок атрибутов, если ты про это роли не играет. НИКАКОЙ.


 
sniknik ©   (2012-02-25 21:11) [4]

p.s. тебе нужен не код, а текст. разбирай его тогда сам, сохраняя форматирование/выполняя по нему скрипты... тоже сам, т.к. скрипт тоже может "попортить" содержимое.


 
Pcrepair ©   (2012-02-25 21:44) [5]

не угадал
мне нужно понять, можно ли переделать код
MS := (WebBrowser1.Document as IHTMLDocument2).body.innerhtml; так чтобы сохранялась структура, или нет
вопрос вообще к тем кто хорошо знаком с TWebBrowser


 
sniknik ©   (2012-02-25 22:26) [6]

> вопрос вообще к тем кто хорошо знаком с TWebBrowser
это типа на слабо? :) ну, ну. удачи.


 
Pcrepair ©   (2012-02-26 09:56) [7]

это типа - не понимаешь о чем топик, переспроси, а не постИ свои фантазии


 
sniknik ©   (2012-02-26 10:05) [8]

тебе уже сказали про DOM. не понимаешь, что это и, почему тут компонент самого TWebBrowser дело десятое? переспроси(а лучше загугли) не тупи.


 
sniknik ©   (2012-02-26 10:31) [9]

скопировать в файл с расширением html, открыть в IE (без всяких TWebBrowser) нажать любую ссылку
<html>

<head>
<title>Тест "порчи"</title>
<meta content="text/html; charset=windows-1251" http-equiv=Content-type>

<script language="JavaScript" type="text/javascript">
<!--
 function c() {
   document.body
   alert(document.body.innerHTML);
 }
//-->
</script>
</head>

<body>
 <a href="http://mail.yandex.ru"onclick="c(this,17,1080)">Войти в почту</a>
 <a href="http://www.yandex.ru" onclick="c(this,17,1083)">Яндекс</a>
 <a href="http://www.artlebedev.ru" onclick="c(this,17,1084)">Студия Артемия Лебедева</a>
</body>

</html>

причем тут TWebBrowser???


 
sniknik ©   (2012-02-26 10:35) [10]

пустое
> document.body
в функции лишнее, ошибки не дает, не обратил внимания.


 
Pcrepair ©   (2012-02-26 16:47) [11]


> причем тут TWebBrowser???

как причем? оно же в качестве браузера используется
или по твоему
MS := (WebBrowser1.Document as IHTMLDocument2).body.innerhtml;
это не передача в ПЕРЕМ результата работы DOM?
во всяком случае результат работы скриптов там есть


 
Pcrepair ©   (2012-02-26 16:58) [12]

для большей понятности, хотя  к существу вопроса это и не относится
в дальнейшем страница обрабатывается по определенному алгоритму, удаляется все кроме тегов разметки текста, текста и ссылок
пр этом a href и A onclick не одно и то же


 
sniknik ©   (2012-02-26 17:23) [13]

> как причем?
так, при чем? если пример без него прямо в IE дает тоже самое. вот при чем?

> или по твоему
это по твоему, не знаю ю чего ты там понял, но говорил о другом.

> a href и A onclick не одно и то же
и то и другое никуда не делось, называется как называлось, значения имеют те же т.е. все то же самое, ОДИН В ОДИН.
т.е. в чем проблема? так и не удосужился сообщить.


 
sniknik ©   (2012-02-26 17:27) [14]

> страница обрабатывается по определенному алгоритму
вот к этому ламерскому алгоритму и должны быть претензии. раз он не справляется с прописью в именах тегов, "закладывается" на определенный порядок атрибутов, и т .д.


 
Pcrepair ©   (2012-02-26 18:17) [15]

похоже ты так ничего и не понял, объясняю еще раз:
в коде страницы в том числе и в ИЕ8 и в ХРОМ
<a href="http://mail.yandex.ru"onclick="c(this,17,1080)">Войти в почту</a>
после обработки ХТМЛ-кода

MS := (WebBrowser1.Document as IHTMLDocument2).body.innerhtml;

получается:
<A onclick=c(this,17,1080) href="http://mail.yandex.ru">Войти в почту</A>
и это видно в МЕМО, поскольку

Memo1.Text := MS;

ну что тут неясно?


 
brother ©   (2012-02-26 18:39) [16]

мдя... видимо тут одни тупые...


 
brother ©   (2012-02-26 18:40) [17]

> обрабатывается по определенному алгоритму

где он?

> удаляется все кроме тегов разметки текста

допустим

> пр этом a href и A onclick не одно и то же

а вообще то это может быть и одно и тоже, нужно правильно парсить


 
Pcrepair ©   (2012-02-26 18:47) [18]

специально для братана, повторяю вопрос

> Вопрос:
> что нужно изменить в коде, чтобы ссылки не портились, конечно
> если это возможно
> Всем ответившим спасибо.

и не нужно ничего парсить
страница обрабатывается по определенному алгоритму, удаляется все кроме тегов разметки текста, текста и ссылок


 
Германн ©   (2012-02-26 19:01) [19]

И не лень автору параллельно на четырех форумах пудрить всем мозги неким "определенным алгоритмом".


 
Pcrepair ©   (2012-02-26 19:27) [20]

Удалено модератором


 
Anatoly Podgoretsky ©   (2012-02-26 19:49) [21]

Cсылки не портятся, а приводятся к единому, каноническому виду.


 
sniknik ©   (2012-02-26 20:16) [22]

> ну что тут неясно?
действительно, ну что тут может быть неясно
атрибут href из первой ссылки -
href="http://mail.yandex.ru"
из второй
href="http://mail.yandex.ru"

атрибут onclick из первой ссылки -
onclick="c(this,17,1080)"
из второй
onclick=c(this,17,1080)

все согласно правилам html, все равнозначно, т.е. "монописуально". любой движок поймет и то и то.

а "определенный алгоритм" не понимает? в ... ну в корзину, скажем, такой алгоритм. и ламера его писавшего тоже куда подальше. не понимают его как же.

> а приводятся к единому, каноническому виду.
ну, еще вопрос, что является каноническим... IE тут не законадатель, хотя и самый массовый движок. а вот мозилла (gecko) приводит к другому виду (не каноническому? ;) но зато по W3C).
хотя, как говорил, пофигу, порядок атрибутов роли не играет.


 
sniknik ©   (2012-02-26 20:18) [23]

> пудрить всем мозги неким "определенным алгоритмом".
типа, "алгоритм" - document.body.innerText, готово... (только IE, мозила/... не поймут)
?


 
Pcrepair ©   (2012-02-26 20:19) [24]

вопрос был о другом

> Вопрос:
> что нужно изменить в коде, чтобы ссылки не портились, конечно
> если это возможно

на вопрос ты ответил, вместо ответа начал уводить в сторону
если не знаешь ответа - так и скажи, никто знает все


 
Sha ©   (2012-02-26 20:26) [25]

что есть порченая ссылка?


 
sniknik ©   (2012-02-26 20:34) [26]

если не доходит, то прямым текстом - собрать разобранное в целое в том же порядке, что было невозможно. т.к. всем накласть на порядок атрибутов, актуальнее другое.
"в сторону" это значит попытки объяснить, переключить внимание на решение собственно задачи, так воспринимаются?
блин и где у нас "черный список". когда он так нужен???!!!


 
Pcrepair ©   (2012-02-26 20:34) [27]

ну, мне не лень

в коде страницы в том числе и в ИЕ8 и в ХРОМ
<a href="http://mail.yandex.ru"onclick="c(this,17,1080)">Войти в почту</a>
после обработки ХТМЛ-кода

MS := (WebBrowser1.Document as IHTMLDocument2).body.innerhtml;

получается:
<A onclick=c(this,17,1080) href="http://mail.yandex.ru">Войти в почту</A>
и это видно в МЕМО, поскольку

Memo1.Text := MS;

так вот подмена TWebBrowser <a href= на <A onclick= и есть порченая ссылка
для моей программы, поскольку программа код
<a href= и далее оставляет а, код
<A onclick= и далее удаляет, поскльку в нем нет ничего, для меня, важного


 
Pcrepair ©   (2012-02-26 20:36) [28]

Удалено модератором
Примечание: Кончай нападать на всех


 
sniknik ©   (2012-02-26 20:40) [29]

> тут не детский сад
сложно представить, по уровню вопросов...

> желательно аргументированно
DOM!!! аргумент с первого ответе, поискал бы как это работает.


 
Pcrepair ©   (2012-02-26 20:44) [30]


> DOM!!! аргумент с первого ответе, поискал бы как это работает.

ну вообще то такой ответ нельзя считать даже ответом, не то что аргументированным ответом.
если все будут отсылать в гуголь то откуда там возьмутся ответы?(с)


 
Anatoly Podgoretsky ©   (2012-02-26 21:14) [31]

> sniknik  (26.02.2012 20:16:22)  [22]

У каждого свой канонический вид.


 
Dimka Maslov ©   (2012-02-26 21:14) [32]

Вот ты тут уже целый месяц паришь всем мозги со своим перемом, а ничему так и не научился, всё сводится к одному - выньте мне да положьте, вы ничего не понимаете и вообще. И что самое характерное, аргументированный ответ на твой вопрос был дан практически в самом начале твоего сюда пришествия. Может проблема не в этом форуме, а в чём-то другом?



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.53 MB
Время: 0.066 c
15-1351205756
0x44696D61
2012-10-26 02:55
2013.03.22
поле ввода логина


2-1330341115
agent17
2012-02-27 15:11
2013.03.22
TDateTime


15-1353409433
alexdn
2012-11-20 15:03
2013.03.22
Ит проект


2-1335432052
Pcrepair
2012-04-26 13:20
2013.03.22
Многопользовательский режим работы проги


1-1298375588
юрий_карлик
2011-02-22 14:53
2013.03.22
компонент TChart, как скрыть конкретные точки в графике





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский