Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Граббер картинок


Автор: crazynetwork 23.6.2010, 23:06
Добрый день. Необходимо написать граббер картинок с интернет магазина. У кого какие есть идеи?

Автор: Данкинг 24.6.2010, 00:00
Грузить страницу в браузер и оттуда грабить.

Автор: crazynetwork 24.6.2010, 00:22
Цитата(Данкинг @ 24.6.2010,  00:00)
Грузить страницу в браузер и оттуда грабить.

Страницу в браузере грузим. Вопрос в том как дальше грабить картинки?

http://shop.cn.km.ua вот ссылочка откуда надо грабить. Может есть у кого примерчик?

Автор: Данкинг 24.6.2010, 01:53
Сохранение картинок из браузера - был пример в ДРКБ. Примерно так:
Код

 function DownloadFile(SourceFile, DestFile: string): Boolean; 
begin 
  try
    Result := UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0, 
      nil) = 0;
  except 
    Result := False; 
  end; 
end;


procedure TForm1.SpeedButton1Click(Sender: TObject);

var
  k, p: Integer; 
  Source, dest, ext: string;
begin
try
  for k := 0 to WebBrowser1.OleObject.Document.Images.Length - 1 do
  begin
    Source := WebBrowser1.OleObject.Document.Images.Item(k).Src;
    p := LastDelimiter('.', Source);
    ext := UpperCase(Copy(Source, p + 1, Length(Source)));
    if (ext = 'GIF') or (ext = 'JPG') or (ext = 'PNG') then
    begin
      p  := LastDelimiter('/', Source);
      dest := ExtractFilePath(ParamStr(0)) + Copy(Source, p + 1,   Length(Source));
    dest:=DirectoryListBox1.Directory+'\'+extractfilename(dest);
    DownloadFile(Source, dest);
    end;
  end;
MessageDlg ('Сохранено!',mtinformation,[mbyes],0);
except
showmessage ('Нет загруженной страницы!');
end;

end;


Автор: v1m 24.6.2010, 10:38
можно парсером еще) имхо

Автор: crazynetwork 25.6.2010, 23:31
Цитата(Данкинг @ 24.6.2010,  01:53)
Сохранение картинок из браузера - был пример в ДРКБ. Примерно так:
Код

 function DownloadFile(SourceFile, DestFile: string): Boolean; 
begin 
  try
    Result := UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0, 
      nil) = 0;
  except 
    Result := False; 
  end; 
end;


procedure TForm1.SpeedButton1Click(Sender: TObject);

var
  k, p: Integer; 
  Source, dest, ext: string;
begin
try
  for k := 0 to WebBrowser1.OleObject.Document.Images.Length - 1 do
  begin
    Source := WebBrowser1.OleObject.Document.Images.Item(k).Src;
    p := LastDelimiter('.', Source);
    ext := UpperCase(Copy(Source, p + 1, Length(Source)));
    if (ext = 'GIF') or (ext = 'JPG') or (ext = 'PNG') then
    begin
      p  := LastDelimiter('/', Source);
      dest := ExtractFilePath(ParamStr(0)) + Copy(Source, p + 1,   Length(Source));
    dest:=DirectoryListBox1.Directory+'\'+extractfilename(dest);
    DownloadFile(Source, dest);
    end;
  end;
MessageDlg ('Сохранено!',mtinformation,[mbyes],0);
except
showmessage ('Нет загруженной страницы!');
end;

end;


Где описана UrlDownloadToFile, подскажите ?

Автор: Данкинг 25.6.2010, 23:38
Цитата(crazynetwork @  26.6.2010,  00:31 Найти цитируемый пост)
Где описана UrlDownloadToFile, подскажите ? 

urlmon или wininet  smile 

Автор: crazynetwork 29.6.2010, 00:03
Работает если прямая ссылка на картинку, а если сылка вида: http://shop.cn.km.ua/index.php/photo/%20%2011WPSRV/1/0
Как быть в таком случае?

Автор: casinosoftguru 5.7.2010, 15:13
можно через оле выдрать прямые адреса картинок имхо

Код

WebBrowser.OleObject.Document.Images

Массив изображений, содержащихся в документе..Length    Возвращает количество изображений в документе.
.Item(0)    Возвращает первое изображение.
.Item(0).Src    URL первого изображения.


через item(X).src получишь что-то типа http://shop.cn.km.ua/get_image.php?type=6&src=%20%2011WPSRV&num=0

подробнее можно тут почитать http://parsing-and-i.blogspot.com/2009/06/twebbrowser-oleobject.html

Автор: ZaDoXliK 14.7.2010, 06:02
Если картинок не много нужно, вытяни в ручную.
Да... и зачем тебе картинки с пометкой на чужой сайт? или ты еще их в фотошопе решил отредактить все?

Загружаешь страницу, делаешь в ней поиск кавычки и проверяешь, являются ли следующие 26 символов вот этой строкой /get_image.php?type=2&src=, если да то копируешь весь остальной текст до кавычки (") . Так ты получишь ссыль. При скачивании добавь 1 переменную в месте ...type=2, поставишь 1 и будем маленькое изображение.
Так обычно капчу достают...

Надеюсь хоть как то помог...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)