Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Twebbrowser Как получить ссылки на которые ведут картинки?
Форум программистов > Системное программирование > Delphi и Pascal > Delphi - Компоненты
darkcoder
Как получить ссылки на которые ведут картинки?
<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;
Froex
Бери исходный код и используй функцию 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);
darkcoder
нет
мне нужно выдрать из COM обьекта или как это называется точно?
регекспы а тем более скопировать-отрезать-склеить не подходит к сожалению
Froex
К сожалению, с COM я не шибко знаком
darkcoder
ваш код заткнется на
<A href="
<A class href="
< a onmouseover='чето там' HREF
продолжать можно бесконечно

я тоже не знаком, а сегодня надо это сделать
sax_ol
darkcoder
Я что то не понимаю, что у вас не получается ...
То что вам надо достать находится в теге А, следовательно вам надо из документа достать все элементы-линки (ну и ли как там они называються).
Далее пройти по всем в цикле и смотреть нет ли в дочерних (Childs) элемента картинки. Для тех у кого это условие выполняется, забрать ссылку (адресс).

Можно пойти и от обратного. Идти по картинкам, но смотреть родителя (Parent).
darkcoder
вот! про дочерние наверно правильно
спасибо
а можно код если вам не сложно хотя бы примерный.. а то я с этим первый раз сталкиваюсь.
sax_ol
У меня нет EmbeddedWB. Но я не думаю что там все так уж сложно ...

Цитата(Froex @ 6:03:2008 - 18:49) *
К сожалению, с COM я не шибко знаком

Тут его и знать ненадо, просто пользовать почти как обычный компонент.
darkcoder
Он такой же как и обычный webbrowser
все от webbrowser'а подходит
sax_ol
Примерно так с 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;
darkcoder
sax_ol кроме огромного спасибо сказать нечего.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Русская версия IP.Board © 2001-2008 IPS, Inc.