Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Хитрый парсинг [D7, WinXP]


Checist [root] ©   (2004-10-18 12:10:00) 

И так. Имеем в WebBrowser загруженный html док, в котором 3-и картинки (jpg), с каждой картинки ссылки на разные ресурсы (jpg, mp3, exe). Необходимо произвести парсинг и в итоге получить, например: www.get.ru/1.jpg - www.soft.ru, www.get.ru/2.jpg - www.music.ru/muz.mp3, www.get.ru/3.jpg - www.photo.com/pict/1.bmp. Получить отдельно все адресса картинок и ссылки с них я могу, а как получить: адресс картинки - ссылку с нее. Дайте кусок сыра. Очень прошу.


Checist [root]   (2004-10-18 16:04:00) [1]

Большое тебе человеческое спасибо easy!


easy   (2004-10-18 14:16:00) [2]

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, OleCtrls, SHDocVw;

type
 TForm1 = class(TForm)
   WebBrowser1: TWebBrowser;
   Memo1: TMemo;
   procedure FormCreate(Sender: TObject);
   procedure WebBrowser1DocumentComplete(Sender: TObject;
     const pDisp: IDispatch; var URL: OleVariant);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 with Memo1 do begin
   Clear;
   ScrollBars:=ssBoth;
   Align:=alBottom;
   Height:=300;
 end;
 with WebBrowser1 do begin
   Align:=alClient;
   Navigate(' http://delphimaster.ru/cgi-bin/forum.pl?id=1098087032&n=0');
 end;
end;

procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
 const pDisp: IDispatch; var URL: OleVariant);
var
 Images:OleVariant;
 i:integer;
 href:string;
begin
 Images:=WebBrowser1.OleObject.document.all.tags('IMG');
 for i:=0 to Images.length-1 do begin
   if Images.item(i).parentElement.tagName='A' then
     href:=Images.item(i).parentElement.href else
     href:='Empty';
     Memo1.Lines.Add('IMG'+inttostr(i)+': src: ['+Images.item(i).src+'], href: ['+href+']');
 end;
end;

end.


Checist [root]   (2004-10-18 12:52:00) [3]

В этом и дело, как вытащить через WebBrowser.document... строки содержищие одновременно и картинку и ссылку с нее. Вообще как вытащить не весть документ, а отдельную строку...


KSergey   (2004-10-18 12:35:00) [4]

Аааа, вот про какие ссылки речь..
Ну а проблема-то в чем?
Только не понятно как вариант

> 3 - пусто

должен быть обыгран? Его не должно быть в списке? Или должно быть что-то - но что?

Если первое -

// sAHerf - строка со ссылкой
if sAHref <> EmptyStr then
  // выводим получившуюся пару как в [2]


Checist [root]   (2004-10-18 12:22:00) [5]

Если предположим с 1-ой картинки нет ссылки то получим несоответствие. То кесть иммем: 1 картинка - пусто, 2 - 1 ссылка, 3 - 2 сылка. А получим: 1 - 1 ссылка, 2 - 2, 3 - пусто. Так то!!!


begin...end   (2004-10-18 12:17:00) [6]


> [1] KSergey ©   (18.10.04 12:14)

Картинка тоже может быть ссылкой.


KilkennyCat   (2004-10-18 12:15:00) [7]

дак елементарно:
предположим, в s1 - адрес картинки, а в s2 - адрес ссылки.
в итоге result := s1 + ' - ' + s2;


KSergey   (2004-10-18 12:14:00) [8]

> Получить отдельно все адресса картиноки ссылки с нихя
> могу, а как получить: адресс картинки - ссылку с нее.

Не понял... А это что?


Наверх

Титульная страница Поиск, карта сайта Написать письмо