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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2011, 20:54   #1
marco.v
 
Регистрация: 04.05.2011
Сообщений: 6
По умолчанию Как вытащить ссылки из текста html

Народ, помогите пожалуйста.
Никак не могу понять.

first.Text:=IdHTTP1.Get(url);

как мне вытащить отсюда все ссылки?

это же обычный HTML в виде строки, но я не понимаю, как это реализовать.

формат ссылок одинаков, но есть ссылки вида
http://bla-bla.ru
и
http://bla-bla.ru/articles/news1.html

так вот надо только домен вытащить.
marco.v вне форума Ответить с цитированием
Старый 23.05.2011, 21:00   #2
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Используй Copy, Pos
Shouldercannon вне форума Ответить с цитированием
Старый 23.05.2011, 21:21   #3
marco.v
 
Регистрация: 04.05.2011
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
Используй Copy, Pos
пробовал - не получается. вытаскивается с кучей хлама..
marco.v вне форума Ответить с цитированием
Старый 23.05.2011, 22:28   #4
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию

дай больше инфы
bulldog5293 вне форума Ответить с цитированием
Старый 23.05.2011, 22:30   #5
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Можно с помощью функции posex из StrUtils
Код:
  i := posex('http://', first.Text);
  while i <> 0 do begin
    j := i + 7;
    while not (first.Text[j] in ['/', ' ', '''', '"', '>']) do inc(j);//тут перечисляем признаки конца домена
    st := copy(first.Text, i, j - i);
    memo1.Lines.Add(st);//куда-нибудь добавляем
    i := posex('http://', first.Text, i + 1);
  end
eoln вне форума Ответить с цитированием
Старый 23.05.2011, 22:33   #6
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию

eoln класная функция с признаками конца домена, с меня +
bulldog5293 вне форума Ответить с цитированием
Старый 23.05.2011, 22:46   #7
marco.v
 
Регистрация: 04.05.2011
Сообщений: 6
По умолчанию

Цитата:
Сообщение от bulldog5293 Посмотреть сообщение
eoln класная функция с признаками конца домена, с меня +

спасибо, вроде выдергивает, сейчас буду додумывать )
marco.v вне форума Ответить с цитированием
Старый 14.08.2011, 01:10   #8
SportPuma
 
Регистрация: 14.08.2011
Сообщений: 4
По умолчанию

Скажите пожалуйста как работает код eolna?
мне нужна такая же прога. скажите как сделать что бы ссылки вывести в программе на экран?
SportPuma вне форума Ответить с цитированием
Старый 14.08.2011, 01:41   #9
gesper
Пользователь
 
Аватар для gesper
 
Регистрация: 02.04.2011
Сообщений: 17
По умолчанию

Цитата:
Сообщение от SportPuma Посмотреть сообщение
Скажите пожалуйста как работает код eolna?
мне нужна такая же прога. скажите как сделать что бы ссылки вывести в программе на экран?
Как вариант воспользуйся регулярными выражениями.
В этом коде немного переделана функция из примера от RegExpr.
Ищет ссылки в тексте.
Код:
...

uses RegExpr; // В интернете найдешь

...

function TFinfo.FindURL (const AInputString : string) : String;

// Обратите внимание, что если эта функция будет использоваться часто,
// то наша реализация далека от оптимальной.
// Правильнее тогда использовать заранее (при инициализации программы)
// созданный TRegExpr с уже откомпилированным выражением

 const
  URLRE = '([telnet|http|https|ftp]*):\/\/+([_a-z\d\-\.\/]*)';
 var
  r : TRegExpr;
 begin
  Result := '';

  r := TRegExpr.Create;
  // Создание объекта - не забывайте об этом, 10% писем ко мне
  // связаны с тем, что объект начинают использьвать, не создав его.

  try // гарантирует освобождение занятой объектом памяти
     r.Expression := URLRE;
	// Присваиваем исходный текст регулярного выражения.
	// При первой же необходимости (например, при вызове метода Exec)
	// оно будет откомпилировано. Если в выражении есть ошибки, то
	// будет вызвано исключение
     if r.Exec (lowercase(AInputString)) then
      //REPEAT
        Result := r.Match [0];
      //UNTIL not r.ExecNext;
    finally r.Free;
   end;
 end;
gesper вне форума Ответить с цитированием
Старый 14.08.2011, 19:08   #10
SportPuma
 
Регистрация: 14.08.2011
Сообщений: 4
По умолчанию

Спасибо! сколько будет стоить что бы сделать исходник с этим кодом? мне нужна прога для сбора url с адреса сайта для статистики. те.
вынуть ссылки с сайта и записать их файл удаляя повторные
SportPuma вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Код(скрипт) чтения HTML страницы как текста PuzzleC JavaScript, Ajax 3 06.03.2010 15:35
Вывести ссылки из html страницы. 3dgraph Общие вопросы .NET 5 30.07.2009 20:49
html - ссылки Manitu Помощь студентам 1 24.03.2008 19:24
Как выдрать из HTML кода ссылки? Vit2 Общие вопросы Delphi 1 24.04.2007 23:09