Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TRegExpr, получить ссылку с вебстранницы 
V
    Опции темы
TrillerMan
Дата 10.11.2007, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 20.12.2006

Репутация: нет
Всего: нет



Здрасти всем.Хочу выдрать ссылку с этого сайта http://www.zaycev.net/pages/186/18674.shtml
на этой странице где таблица скачать mp3,есть ссылка с оранжевым текстом mp3

мне нужно её получить,вот нашёл код как работать с tregexp , но к сожалению не могу разобраться,может ктото работал с регэкспами и может составить регулярку для этого сайта?

вот код который грузит страницу,надо сделать нужную регулярку,хочу автоматизировать выкачку с этого сайта музона сразу альбомами smile 
Код

procedure TForm1.BitBtn1Click(Sender: TObject);
 const
  Template = '(?i)Официальный курс ЦБ по доллару'
   + '.*Дата\s*Курс\s*Курс пок.\s*Курс прод. [^<\d]*'
   + '(\d?\d)/(\d?\d)/(\d\d)\s*[\d.]+\s*([\d.]+)';
 begin
  NMHTTP1.Get ('http://win.www.citycat.ru/finance/finmarket/_CBR/');//тут естественно надо вставить ссылку на http://www.zaycev.net/pages/186/18674.shtml просто показываю пример,таким какой он есть
  with TRegExpr.Create do try
     Expression := Template;
     if Exec (NMHTTP1.Body) then begin
       Label1.Caption := Format ('Курс на %s.%s.%s: %s',
         [Match [2], Match [1], Match [3], Match [4]]);
      end;
    finally Free;
   end;
 end;

PM MAIL   Вверх
MetalFan
Дата 10.11.2007, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 14
Всего: 128



а при чем тут приведенный код?!


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
TrillerMan
Дата 10.11.2007, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 20.12.2006

Репутация: нет
Всего: нет



ну он тоже работает с регекспами )))
хотелось бы,чтобы знающий человек составил правильную регекспу,я этого не умею(
PM MAIL   Вверх
MetalFan
Дата 10.11.2007, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 14
Всего: 128



ты бы хоть привел примеры нужных ссылок.
провел бы исследование того сайта.
или предлагаешь за тебя это сделать?

Добавлено @ 18:10
для ссылки вида:
Код

http://www.zaycev.net/download.php?ass=%CB%E8%E3%E0%EB%E0%E9%E7_-_%CE%F1%F2%E0%F2%FC%F1%FF.mp3&id=18674

регулярка будет примерно такая:
Код

http://www.zaycev.net/download.php\?ass=.+&id=\d+


Это сообщение отредактировал(а) MetalFan - 10.11.2007, 18:11


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
TrillerMan
Дата 10.11.2007, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 20.12.2006

Репутация: нет
Всего: нет



ок,счас попробую.спасибо

Это сообщение отредактировал(а) TrillerMan - 10.11.2007, 19:08
PM MAIL   Вверх
TrillerMan
Дата 11.11.2007, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 20.12.2006

Репутация: нет
Всего: нет



Страница открывается,но регулярка не работает((
Ниже привожу код.
Вообщем нужно получить ссылку о которой выше шёл разговор,но в Label1 пустота.
ЧТо не так делаЮ?
Код

procedure TForm1.Button1Click(Sender: TObject);
 const
  Template = 'http://www.zaycev.net/download.php\?ass=.+&id=\d+';
 begin
  x:=IdHTTP1.Get ('http://www.zaycev.net/pages/186/18674.shtml');
  with TRegExpr.Create do try
     Expression := Template;
     if Exec (x) then begin
       Label1.Caption := Format ('ССылка',
         [Match [2], Match [1], Match [3], Match [4]]);
      end;
    finally Free;
   end;
 end;


PM MAIL   Вверх
MetalFan
Дата 11.11.2007, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 14
Всего: 128



TrillerMan, ты бы хоть  хелп к TRegExpr почитал...
как минимум ошибка в том, что надо брать Match[0], а не подвыражения, которых нет.
возможно гдето ошибка в регулярке.
вот, после замены на нежадный ".+" вроде заработало
Код

http://www.zaycev.net/download.php\?ass=.+?&id=\d+



--------------------
There are always someone smarter than you...
PM MAIL   Вверх
TrillerMan
Дата 11.11.2007, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 20.12.2006

Репутация: нет
Всего: нет



Cделал всё как надо,не работает всё равно.Хелп бы я прочитал бы,но я вообще не понимаю в регекспы (( Приложил архив с исходниками ниже,а вот собственно кусок код.
Код

procedure TForm1.Button1Click(Sender: TObject);
 const
  Template = 'http://www.zaycev.net/download.php\?ass=.+?&id=\d+';
 begin
  x:=IdHTTP1.Get ('http://www.zaycev.net/pages/186/18674.shtml');
  with TRegExpr.Create do try
     Expression := Template;
     if Exec (x) then begin
       Label1.Caption := Format ('ССылка',
         [Match [0]]);
      end;
    finally Free;
   end;
 end;


Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  zayci.rar 63,67 Kb
PM MAIL   Вверх
MetalFan
Дата 11.11.2007, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 14
Всего: 128



Цитата(TrillerMan @  11.11.2007,  12:52 Найти цитируемый пост)
       Label1.Caption := Format ('ССылка',
         [Match [0]]);

и что ты хочешь от этого кода? думать надо прежде, чем копипастить...
все, я больше ничего не скажу. здесь явная ошибка, ищи добрых людей, может подскажут. или Format + F1


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
W4FhLF
Дата 11.11.2007, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: нет
Всего: 121



Выражение работает правильно, но составлено не совсем верно. Вот так будет лучше:


Код

http://www\.zaycev\.net/download\.php\?ass\=.+?\&id\=\d+



Второе, создай нормально объект. 

Код

var
  exp: TRegExpr;
begin
  exp := TRegExpr.Create;
  try
    exp.Expression := 'http://www\.zaycev\.net/download\.php\?ass\=.+?\&id\=\d+';
    exp.Exec('http://www.zaycev.net/download.php?ass=%CB%E8%E3%E0%EB%E0%E9%E7_-_%CE%F1%F2%E0%F2%FC%F1%FF.mp3&id=18674');
    ShowMessage(exp.Match[0]);
  finally
    exp.Free;
  end;


Всё работает. 


Это сообщение отредактировал(а) W4FhLF - 11.11.2007, 13:06


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
TrillerMan
Дата 11.11.2007, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 20.12.2006

Репутация: нет
Всего: нет



Спасибо всем за помощь,всё отлично работает smile 
PM MAIL   Вверх
MetalFan
Дата 11.11.2007, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 14
Всего: 128



Цитата(W4FhLF @  11.11.2007,  13:05 Найти цитируемый пост)
составлено не совсем верно

точно! про точки забыл  smile 


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0795 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.