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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2015, 16:09   #31
reco1123
Пользователь
 
Регистрация: 13.02.2015
Сообщений: 28
По умолчанию

Цитата:
Сообщение от Dmitry33RU Посмотреть сообщение
Что-то не пойму как с ним работать

Код:
Match := TRegEx.Match(html,'<b>(.*?)</b><h4>(.*?)</h4>');
while Match.Success do begin
memo1.lines.Add(Match.value);
Match := Match.NextMatch;
end;
так он выводит полностью строку <b>Текст1</b><h4>Текст2</h4>

А как разбить на Текст1 и Текст2?
reco1123 вне форума Ответить с цитированием
Старый 17.02.2015, 16:12   #32
Dmitry33RU
Пользователь
 
Регистрация: 09.10.2014
Сообщений: 62
По умолчанию

Текст1 :=Match.Groups[1].Value
Текст2 :=Match.Groups[2].Value
Dmitry33RU вне форума Ответить с цитированием
Старый 17.02.2015, 16:32   #33
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Регулярками не надо HTML парсить, обычно гораздо проще и надежнее HTML/XML парсерами (например, используя язык запросов типа XPath).

Не знаю что в мире Дельфи есть кроме MS IHTMLDocument2, может быть это http://www.benibela.de/sources_en.html#internettools или http://www.yunqa.de/delphi/doku.php/...mlparser/index или http://sourceforge.net/projects/htmlp/ или TJvHTMLParser из Jedi. Сами гуглите в общем https://www.google.com/search?q=delphi+html+parser
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 17.02.2015 в 16:37.
Alex11223 вне форума Ответить с цитированием
Старый 17.02.2015, 19:09   #34
reco1123
Пользователь
 
Регистрация: 13.02.2015
Сообщений: 28
По умолчанию

Цитата:
Сообщение от Iron Monk Посмотреть сообщение
Сейчас уберу регион, будет везде работать.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
lst: TStringList;
IdHTTP1: TIdHTTP;
i: integer;
begin
  IdHTTP1:= TIdHTTP.Create(nil);
  lst:= TStringList.Create;
  lst.Text:=Utf8ToAnsi(idHTTP1.Get('http://m.news.yandex.ru/index.html'));
  for i:= 0 to lst.Count - 1 do
    begin
    if Pos('href="/yandsearch?', lst[i]) <> 0 then
      begin
      lst[i]:= Trim(StringReplace(lst[i], 'href="/yandsearch?', 'http://m.news.yandex.ru/yandsearch?',[rfReplaceAll]));
      Memo1.Lines.Add(Copy(lst[i], Pos('http://m.news.yandex.ru/',lst[i]), Pos('&lr=',lst[i]) - 1));
      if Pos('&lr', Memo1.Lines[Memo1.Lines.Count - 1]) <> 0 then
      Memo1.Lines[Memo1.Lines.Count - 1]:= Copy(Memo1.Lines[Memo1.Lines.Count - 1], 1, Pos('&lr',Memo1.Lines[Memo1.Lines.Count - 1]) - 1);
      end;
         if Pos('<span class="b-titles-list__link-i">', lst[i]) <> 0 then
         Memo1.Lines.Add(Copy(Trim(lst[i]), Pos('<span class="b-titles-list__link-i">',Trim(lst[i])) + 36, Pos('</span>',Trim(lst[i])) - 37));
           if Pos('/80x80"/>', lst[i])<> 0 then
           Memo1.Lines.Add(Copy(lst[i], Pos('/80x80"/>',lst[i]) + 9, 255));
             if (Trim(lst[i]) = 'class="b-titles-list__link">') and (Pos('/80x80"/>', lst[i+1]) = 0) then
             Memo1.Lines.Add(Trim(lst[i+1]));
    end;
  lst.Free;
  IdHTTP1.Free;
end;
end.
А можно тут сделать чтобы ссылки писались не в мемо а в массив?
reco1123 вне форума Ответить с цитированием
Старый 17.02.2015, 20:42   #35
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Цитата:
Сообщение от reco1123 Посмотреть сообщение
А можно тут сделать чтобы ссылки писались не в мемо а в массив?
Скажи конкретное ТЗ. Можно и в массив, можно и активлинк. Что хочешь, только скажи, что конкретно нужно.
Iron Monk вне форума Ответить с цитированием
Старый 17.02.2015, 20:46   #36
reco1123
Пользователь
 
Регистрация: 13.02.2015
Сообщений: 28
По умолчанию

вот заголовок так же выводить в memo а ссылки загружать в массив начиная с нуля
reco1123 вне форума Ответить с цитированием
Старый 17.02.2015, 20:53   #37
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Цитата:
Сообщение от reco1123 Посмотреть сообщение
вот заголовок так же выводить в memo а ссылки загружать в массив начиная с нуля
Это же азы))) И размер массива заранее известен. А потом нужно будет ссылки из массива извлекать. Нанимайте меня на работу))))
Iron Monk вне форума Ответить с цитированием
Старый 17.02.2015, 21:01   #38
reco1123
Пользователь
 
Регистрация: 13.02.2015
Сообщений: 28
По умолчанию

Код:
я сделал вот так, но помойму это хрень какае-то)) хотя работает

if Pos('href="/yandsearch?', lst[i]) <> 0 then begin
lst[i]:= Trim(StringReplace(lst[i], 'href="/yandsearch?', 'http://m.news.yandex.ru/yandsearch?',[rfReplaceAll]));
Memo1.Lines.Add(Copy(lst[i], Pos('http://m.news.yandex.ru/',lst[i]), Pos('&lr=',lst[i]) - 1));
if Pos('&lr', Memo1.Lines[Memo1.Lines.Count - 1]) <> 0 then
Memo1.Lines[Memo1.Lines.Count - 1]:= Copy(Memo1.Lines[Memo1.Lines.Count - 1], 1, Pos('&lr',Memo1.Lines[Memo1.Lines.Count - 1]) - 1);
LinkNews[a]:=Memo1.Lines[Memo1.Lines.Count - 1];
Memo1.Lines.Delete(Memo1.Lines.Count - 1);
a:=a+1;
end;
reco1123 вне форума Ответить с цитированием
Старый 17.02.2015, 21:10   #39
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Запусти цикл downto - четные заноси в массив и удаляй.
Iron Monk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить текст друго сайта Pekky Фриланс 21 15.09.2014 04:34
Получить ссылки со страницы UKRtortik Общие вопросы Delphi 31 12.06.2014 15:45
Получить имя файла из ссылки(в конце ссылки нет имени файла) Человек_Борща Работа с сетью в Delphi 11 05.06.2011 15:15
Дан файл, содержащий текст, записанный строчными русскими буквами. Получить в др.файле тот же текст, develish151 Microsoft Office Word 4 05.05.2010 13:20
Получить ссылки из HTML-файла tsimokhin Общие вопросы Delphi 2 01.05.2009 09:57