Ну к примеру вот так:
| Код | unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleCtrls, SHDocVw, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, mshtml, ActiveX;
type TForm1 = class(TForm) IdHTTP1: TIdHTTP; WebBrowser1: TWebBrowser; WebBrowser2: TWebBrowser; Button1: TButton; procedure Button1Click(Sender: TObject); end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); const StartImg = '<img src="'; EndImg = '>'; LengthStart = Length(StartImg); LengthEnd = Length(EndImg); LengthSum = LengthStart + LengthEnd; var InHTML, OutHTML, ImageLink: String; Position: Cardinal; Document: IHtmlDocument2; V: Variant; begin // Загружаем оригинальную страницу (для сравнения) WebBrowser1.Navigate('http://www.yandex.ru'); // Получаем код этой страницы руками InHTML := IdHTTP1.Get('http://www.yandex.ru'); // Начинаем парсить while Length(InHTML) > 0 do begin // Ищем начало рисунка Position := Pos(StartImg, InHTML); // Если нашли if Position > 0 then begin // Все что до него - помещаем в выходной буффер OutHTML := OutHTML + Copy(InHTML, 1, Position - 1); // Удаляем ненужное из входного буффера Delete(InHTML, 1, Position - 1); // Ищем конец картинки Position := Pos(EndImg, InHTML); // Запоминаем картинку ImageLink := Copy(InHTML, LengthStart, Position - LengthSum); // Если эта картинка грузится не с узла img.yandex.ru - добавялем ее в выходной буффер if Pos('img.yandex.ru', ImageLink) = 0 then OutHTML := OutHTML + Copy(InHTML, 1, Position + LengthEnd - 1); // Удаляем из входного Delete(InHTML, 1, Position + LengthEnd - 1); end else begin // Больше картинок нет - все что осталось перекидываем в выходной буффер OutHTML := OutHTML + InHTML; InHTML := ''; end; end; // Закидываем пропарсенный текст в бразер WebBrowser2.Navigate('about:blank'); while WebBrowser2.Document = nil do Application.ProcessMessages; Document := WebBrowser2.Document as IHtmlDocument2; V := VarArrayCreate([0, 0], varVariant); V[0] := OutHTML; Document.Writeln(PSafeArray(TVarData(v).VArray)); end;
end.
|
|