Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.12.2011, 20:55
MrDiG MrDiG вне форума
Начинающий
 
Регистрация: 05.10.2010
Сообщения: 112
Репутация: 1227
По умолчанию Выдрать картинку со страницы

Туплю страшно. Подскажите.

Пишу автоматический регер одного небольшого сервиса. Всё хорошо пишется до капчи. На одном из этапов, передаю POST запрос одной странице, в ответ мне отдают страницу со следующей по счёту формой. На этой странице есть изображение капчи, которое мне нужно скачать в папку с моей программой. Картинка всегда находится по адресу: http://site.com/token.php?bla=$k

Код:
text:=HTTP.Post('http://site.com/index.php?site=site',data);

В text у меня находится код страницы. В ней есть строчка:
<img src="token.php?bla=$k"> - вывод картинки в png.

Как мне сохранить её к себе? Именно текущую картинку?

Естественно, что если обращаться отдельно к http://site.com/token.php?bla=$k картинка капчи будет другая.

С распознавание капчи через сервис уже разобрался.
Ответить с цитированием
  #2  
Старый 08.12.2011, 08:52
MrDiG MrDiG вне форума
Начинающий
 
Регистрация: 05.10.2010
Сообщения: 112
Репутация: 1227
По умолчанию

А гугл просто открывался...
Код:
procedure TForm3.Button1Click(Sender: TObject);
var List: TStringList;
    R: TRegExp;
    mc: MatchCollection;
    m: Match;
    sm: SubMatches;
    Stream: TMemoryStream;
    JPEG: TJPEGImage;
begin
  List:=TStringList.Create;
  List.Text:=IdHTTP1.Get('http://webmaster.yandex.ru/');//получаем содержимое страницы в переменную
  R:=TRegExp.Create(self);
  R.Pattern:='src="(.*?key.*?)"'; //регулярное выражение для поиска Captcha
  R.Multiline:=true;
  R.IgnoreCase:=true;
  R.Global:=true;
  mc := R.Execute(List.Text) as MatchCollection;
    if mc.Count > 0 then //нашли совпадение
      begin
        m:= mc[0] as Match;
        sm:= m.SubMatches as SubMatches;
        Stream:=TMemoryStream.Create;
        IdHTTP1.Get(sm[0],Stream); //грузим капчу в поток.
        Stream.Position:=0; //устанавливаем ОБЯЗАТЕЛЬНО на ноль
        JPEG:=TJPEGImage.Create;   //создаем jpeg
        JPEG.LoadFromStream(Stream);//загружаем данные из потока
        Image1.Picture.Assign(JPEG);//выводим в Image
      end;
end;

Closed.
Ответить с цитированием
  #3  
Старый 08.12.2011, 09:02
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Цитата:
А гугл просто открывался...
Вот так бы сразу... И все, а не один...
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:45.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025