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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2011, 13:25   #1
Mihail1987
 
Регистрация: 01.02.2011
Сообщений: 4
По умолчанию Извлечь ссылки

Доброго времени!
Имеется код:
Код:
function GetLinks(const S: String): String;
var
ts:string;
begin
with TRegExpr.Create do
try
Expression:='^(?im).*?<li>(.*?)">.*$';
if Exec(S)
then Result:=Match[1]
else Result:='No title found';
ts:=Replace(result,'',true);
finally
delete(ts,1,15);
form1.Memo1.Lines.Add('http://site.com/?'+ts);
Free;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
s:string;
begin
s:=http.Get('http://site.com/?cat=other');
GetLinks(s);
end;
end.
Хотелось бы чтобы с данной страницы извлекались ВСЕ ссылки по данному выражению. Как правильно сделать цикл в функции GetLinks?
Буду признателен за все ответы!
Спасибо!


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 01.02.2011 в 14:27.
Mihail1987 вне форума Ответить с цитированием
Старый 01.02.2011, 20:05   #2
Puhovoi
Пользователь
 
Аватар для Puhovoi
 
Регистрация: 16.10.2010
Сообщений: 47
По умолчанию

Код:
function exall (const input, expr : string; count : integer; post : tstringlist) : boolean;
var
  r : TRegExpr;
begin
  result := true;
  r := TRegExpr.create;
  r.modifieri := true;
  try
    r.expression := expr;
    if r.Exec (input) then repeat post.add (r.match [count]); until not r.execnext;
  except end;
  r.free;
end;
В post пишутся все найденные значения.
Puhovoi вне форума Ответить с цитированием
Старый 01.02.2011, 22:10   #3
Mihail1987
 
Регистрация: 01.02.2011
Сообщений: 4
По умолчанию

простите, я просто в кодинге вообще 0, не понял немного Вас, попробую сформулировать вопрос иным образом:

Код:
Expression:='^(?im).*?<li>(.*?)">.*$';
в общем от тега <li> до "> пропарсили первую ссылку на странице, далее нужно добраться до следующей ссылки, также от <li> до ">, и так до конца документа (потока).
Mihail1987 вне форума Ответить с цитированием
Старый 01.02.2011, 22:42   #4
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Ну и что здесь связано с "Работа с сетью в Delphi" ?
И не вздумай даже намекать на метод Get() - в три секунды облажаешься.
mss вне форума Ответить с цитированием
Старый 02.02.2011, 09:57   #5
Mihail1987
 
Регистрация: 01.02.2011
Сообщений: 4
По умолчанию

Цитата:
Сообщение от mss Посмотреть сообщение
Ну и что здесь связано с "Работа с сетью в Delphi" ?
Ну ошибся, не в тот раздел запостил, что теперь из этого.
Цитата:
Сообщение от mss Посмотреть сообщение
И не вздумай даже намекать на метод Get() - в три секунды облажаешься.
...
Mihail1987 вне форума Ответить с цитированием
Старый 02.02.2011, 13:59   #6
Mihail1987
 
Регистрация: 01.02.2011
Сообщений: 4
По умолчанию

Код:
function exall (const input, expr : string; count : integer; post : tstringlist) : boolean;
  var
  r : TRegExpr;
  begin
result := true;
r := TRegExpr.create;
r.modifieri := true;
  try
    r.expression := expr;
    if r.Exec (input)
    then repeat post.add (r.match [count]);
    until not r.execnext;
  except end;
form1.Memo1.Lines.Add(post.Text);
r.free;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
s:string;
st:tstringlist;
begin
st:=tstringlist.Create;
s:=http.Get('http://site.com/?cat=other');
exall(s,'^(?im).*?<li>(.*?)">.*$',1,st);
end;
end.
Код:
exall(s,'^(?im).*?<li>(.*?)">.*$',1,st);
выдирает только первую ссылку, если поставить count >1, то пусто

Последний раз редактировалось Mihail1987; 02.02.2011 в 14:01.
Mihail1987 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Необходимо извлечь информацию из БД gsitxrby БД в Delphi 1 12.01.2011 14:54
извлечь 7z архив DIgorevich Общие вопросы Delphi 1 16.07.2010 22:44
Извлечь иконку из EXE? Алексей_C Общие вопросы Delphi 22 27.12.2008 23:34
Извлечь путь из EXE NeiL Общие вопросы Delphi 3 21.05.2008 18:44
Извлечь имена приложений NeiL Win Api 3 07.05.2008 14:33