Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2012, 20:41   #1
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию парсинг картинок demotivators.ru

Код:
      //парсим ссылку на страницу с большой картинкой
      for k := 1 to form1.Memo1.Lines.Count do
        begin
          bg:=posex('href="/posters/',form1.Memo1.Lines.Strings[k]);
          en:=posex('.htm"><img src="',form1.Memo1.Lines.Strings[k]);

          if (bg>0) and (en>0) then
          begin
            //добавляем ссылку в мемо
            res:=linkm+copy(form1.Memo1.Lines.Strings[k],bg+6,en-bg-2);
            //form1.memo2.lines.add(res);
            s:=form1.IdHTTP1.Get(res);
            //res:='';
            form1.Memo2.Lines.Add(s);
            bg:=-1;
            en:=-1;

           for j := 1 to form1.Memo2.Lines.Count do
            begin
              bg1:=posex('id="poster" src="/media/posters/',form1.Memo2.Lines.Strings[j]);
              en1:=posex('.jpg',form1.Memo2.Lines.Strings[j]);

              if (bg1>0) and (en1>0) then
              begin
                link:=linkm+copy(form1.Memo2.Lines.Strings[j],bg1+17,en1-bg1-13);
                form1.memo3.lines.add(link);
                link:='';
                bg1:=-1;
                en1:=-1;
                form1.Memo2.Clear;

              end;

            end;


          end;


        end;
Вот код, проблема такая: не парсятса все ссылки на страницы с большой картинкой не могу понять в чем проблема, может кто поможет?) ,
Прилагаю ещо весь проект.
Вложения
Тип файла: rar pars.rar (447.5 Кб, 11 просмотров)

Последний раз редактировалось Pein95; 13.01.2012 в 21:50.
Pein95 вне форума Ответить с цитированием
Старый 13.01.2012, 21:34   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

1. Циклы долджны быть от 0 до form1.Memo1.Lines.Count-1
2. установите Memo1.WordWrap:=False
3. Аналогично и для других Memo, данные которых парсите
4. Memo2.Clear в цикле по его строкам - нельзя
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 13.01.2012 в 21:36.
Аватар вне форума Ответить с цитированием
Старый 13.01.2012, 21:45   #3
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию

Цитата:
1. Циклы долджны быть от 0 до form1.Memo1.Lines.Count-1
2. установите Memo1.WordWrap:=False
3. Аналогично и для других Memo, данные которых парсите
4. Memo2.Clear в цикле по его строкам - нельзя
на щет первого согласен.
установил Wordwrap в false - тогда вопше бред парсит
4. Можно. так как в мемо я добляю совершенно другой код. мне не нужен предедущий.
Pein95 вне форума Ответить с цитированием
Старый 13.01.2012, 21:52   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

1.Насчет бреда - когда WordWrap=True и строка не умещается по ширине, она переносится на следующую и в Lines будет вместо одной строки несколько с разорванной информацией
2.Когда вы в цикле выполните Memo2.Clear не выходя из него, то следующий такт цикла for j := 1 to form1.Memo2.Lines.Count do (а он запросто может быть) вывалит вам красное окно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 13.01.2012, 22:06   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Весь HTML загоняйте в переменную string и там уже рулите Pos'ами и т.д.
Человек_Борща вне форума Ответить с цитированием
Старый 14.01.2012, 01:54   #6
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию

Цитата:
1.Насчет бреда - когда WordWrap=True и строка не умещается по ширине, она переносится на следующую и в Lines будет вместо одной строки несколько с разорванной информацией
2.Когда вы в цикле выполните Memo2.Clear не выходя из него, то следующий такт цикла for j := 1 to form1.Memo2.Lines.Count do (а он запросто может быть) вывалит вам красное окно
ширина memo достаточна около 1200
Посмотрите внимательно для какого мемо исполняетса код) ето текстовое поле роли никакой после очистки не играет.

Цитата:
Весь HTML загоняйте в переменную string и там уже рулите Pos'ами и т.д.
ето будет ещо труднее
Pein95 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
парсинг Pein95 Работа с сетью в Delphi 4 01.12.2011 02:06
Парсинг tigrend PHP 8 02.10.2011 00:09
Парсинг DeDoK Общие вопросы Delphi 8 02.02.2011 14:20