Помощник
Здравствуйте, гость ( Вход | Регистрация )
|
|
6:03:2008, 16:28
|
|
Новенький ![]() Группа: Программист Сообщений: 19 Регистрация: 31:03:2007 Пользователь №: 9 988 Репутация: 0
|
Как получить ссылки на которые ведут картинки?
<a href="нужно узнать что тут для данной картинки"><img src=""></a> Код приведенные ниже пытался модифицировать, не вышло. for i := 0 to EmbeddedWB1.OleObject.Document.Images.Length - 1 do begin Document := Embeddedwb1.Document as IHtmlDocument2; // Retrieves the calculated width of the image. ImageWidth := Embeddedwb1.OleObject.Document.Images.Item(i).Width; // Retrieves the height of the image. ImageHeight := Embeddedwb1.OleObject.Document.Images.Item(i).Height; // Retrieves the file size of the image. ImageFileSize := (Document.Images.Item(i, 0) as IHTMLImgElement).FileSize; // Retrieves the entire URL that the browser uses to locate the image ImageHref := (Document.Images.Item(i, 0) as IHTMLImgElement).Href; // Retrieves a text alternative to the graphic. ImageTextAlternative := (Document.Images.Item(i, 0) as IHTMLImgElement).alt; // Show image information in a TListbox ListBox1.Items.Add(Format('%s : %d x %d Pixels; %s Bytes; %s', [ImageHref, ImageWidth, ImageHeight, ImageFileSize, ImageTextAlternative])); end; |
|
Сообщение
#1
|
|
![]() |
|
|
6:03:2008, 16:46
|
|
Новенький ![]() Группа: Программист Сообщений: 65 Регистрация: 3:06:2006 Пользователь №: 4 574 Специализация: Программирование, анализ, алгоритмы, оптимизация Репутация: 1
|
Бери исходный код и используй функцию Pos(param1, param2) и Copy(param3, param4, param5)
Pos возвращает целое число, указывающее положение строки param1 в строке param2 Copy возвращает строку (или массив символов), созданную из последовательности символов из строки param3, начиная с символа param4 и длиною param5 1. Сохрани исходный текст страницы в, скажем, переменную str 2. Ищи позицию в исходном коде строки: nPos:=Pos('<a href="',str); 3. Удаляем все до этой строки (можно заносить и в другую переменную): str:=Copy(str, nPos, length(str) - nPos); //начиная с nPos символа (по счету) и длиною до конца строки (как раз длина остатка находится с помощью (length(str)-nPos) ) 4. Ищем конец ссылки: nPos:=Pos('"', str); 5. И копируем все до этой позиции, минус один символ (чтобы этот символ не затронуть): str:=Copy(str, 1, nPos - 1); |
|
Сообщение
#2
|
|
|
|
6:03:2008, 16:48
|
|
Новенький ![]() Группа: Программист Сообщений: 19 Регистрация: 31:03:2007 Пользователь №: 9 988 Репутация: 0
|
нет
мне нужно выдрать из COM обьекта или как это называется точно? регекспы а тем более скопировать-отрезать-склеить не подходит к сожалению |
|
Сообщение
#3
|
|
|
|
6:03:2008, 16:49
|
|
Новенький ![]() Группа: Программист Сообщений: 65 Регистрация: 3:06:2006 Пользователь №: 4 574 Специализация: Программирование, анализ, алгоритмы, оптимизация Репутация: 1
|
К сожалению, с COM я не шибко знаком
|
|
Сообщение
#4
|
|
|
|
6:03:2008, 16:50
|
|
Новенький ![]() Группа: Программист Сообщений: 19 Регистрация: 31:03:2007 Пользователь №: 9 988 Репутация: 0
|
ваш код заткнется на
<A href=" <A class href=" < a onmouseover='чето там' HREF продолжать можно бесконечно я тоже не знаком, а сегодня надо это сделать |
|
Сообщение
#5
|
|
|
|
6:03:2008, 17:35
|
|
============== ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 1 878 Регистрация: 11:01:2007 Пользователь №: 8 750 Специализация: specialist Репутация: 28
|
darkcoder
Я что то не понимаю, что у вас не получается ... То что вам надо достать находится в теге А, следовательно вам надо из документа достать все элементы-линки (ну и ли как там они называються). Далее пройти по всем в цикле и смотреть нет ли в дочерних (Childs) элемента картинки. Для тех у кого это условие выполняется, забрать ссылку (адресс). Можно пойти и от обратного. Идти по картинкам, но смотреть родителя (Parent). |
|
Сообщение
#6
|
|
|
|
6:03:2008, 17:41
|
|
Новенький ![]() Группа: Программист Сообщений: 19 Регистрация: 31:03:2007 Пользователь №: 9 988 Репутация: 0
|
вот! про дочерние наверно правильно
спасибо а можно код если вам не сложно хотя бы примерный.. а то я с этим первый раз сталкиваюсь. |
|
Сообщение
#7
|
|
|
|
6:03:2008, 17:52
|
|
============== ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 1 878 Регистрация: 11:01:2007 Пользователь №: 8 750 Специализация: specialist Репутация: 28
|
|
|
Сообщение
#8
|
|
|
|
6:03:2008, 17:54
|
|
Новенький ![]() Группа: Программист Сообщений: 19 Регистрация: 31:03:2007 Пользователь №: 9 988 Репутация: 0
|
Он такой же как и обычный webbrowser
все от webbrowser'а подходит |
|
Сообщение
#9
|
|
|
|
6:03:2008, 18:24
|
|
============== ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 1 878 Регистрация: 11:01:2007 Пользователь №: 8 750 Специализация: specialist Репутация: 28
|
Примерно так с WebBrowser, ну а далее уже сами меняйте-улучшайте ...
Код procedure TForm1.WebBrowser1DownloadComplete(Sender: TObject);
var i:Integer; img : IHTMLImgElement; begin for i:=0 to (WebBrowser1.Document as IHTMLDocument2).images.length -1 do begin img:= (WebBrowser1.Document as IHTMLDocument2).images.item(i, 1) AS IHTMLImgElement; if ((img as IHTMLElement).parentElement.tagName = 'A') then ShowMessage(((img as IHTMLElement).parentElement as IHTMLAnchorElement).href); end; end; |
|
Сообщение
#10
|
|
|
|
6:03:2008, 21:26
|
|
Новенький ![]() Группа: Программист Сообщений: 19 Регистрация: 31:03:2007 Пользователь №: 9 988 Репутация: 0
|
sax_ol кроме огромного спасибо сказать нечего.
|
|
Сообщение
#11
|
|
![]() |
|
Текстовая версия | Сейчас: 5:07:2008 - 22:36 |