Форум: "Прочее";
Текущий архив: 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.07 c