Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Получение много данных с HTML страниц


Автор: ishimcity 14.3.2009, 20:46
Уважаемые программисты,появилась необходимость получения информации с сайта рассписания поездов.
Информацию то я получаю. но как мне ее правильно получить в TListView
вот принцип кода на html
Код

</table><table class='timetable'><tr><td class='trainnumber' width='10%'><a   href='http://www.poezda.net/ru/train_timetable?st_from=2044700&st_to=2000000&forDate=14-03-2009&tr_code=823918%3A%C0+' class=''>929</a></td><td class='station_timetable' width='25%'><a   href='http://www.poezda.net/ru/station_timetable?st_from=2044700&st_to=2000000&forDate=14-03-2009&st_code=2054001' class=''>Иркутск Пассажирский</a></td><td class='station_timetable' width='25%'><a   href='http://www.poezda.net/ru/station_timetable?st_from=2044700&st_to=2000000&forDate=14-03-2009&st_code=2000002' class=''>Москва Ярославская</a></td><td class='timetable' width='10%'>00:14     </td><td class='timetable' width='10%'>04:00     </td><td class='timetable' width='10%'>2 03:46</td><td class='timetable' width='10%'><a   href='http://www.poezda.net/ru/period_timetable?st_from=2044700&st_to=2000000&forDate=14-03-2009&tr_code=823918%3A%C0+' class=''><img src='/img/calendar_poezda2.gif' border=0 title='Годовой график курсирования'></a></td></tr><tr><td class='trainnumber' width='10%'><a   href='http://www.poezda.net/ru/train_timetable?st_from=2044700&st_to=2000000&forDate=14-03-2009&tr_code=817875%3A%C0+' class=''>917</a></td><td class='station_timetable' width='25%'><a   href='http://www.poezda.net/ru/station_timetable?st_from=2044700&st_to=2000000&forDate=14-03-2009&st_code=2034130' class=''>Владивосток</a></td><td class='station_timetable' width='25%'><a   href='http://www.poezda.net/ru/station_timetable?st_from=2044700&st_to=2000000&forDate=14-03-2009&st_code=2000002' class=''>Москва Ярославская</a></td><td class='timetable' width='10%'>00:14     </td><td class='timetable' width='10%'>04:00     </td><td class='timetable' width='10%'>2 03:46</td><td class='timetable' width='10%'><a   href='http://www.poezda.net/ru/period_timetable?



Как мне получить номер поезда,имя поезда,время и т д , данные одного я могу получить но как всех если в списке их 10-20 поездов?
Спасибо.

Автор: MetalFan 14.3.2009, 21:08
1. PosEx
2. RegExpr
3. IHTMLDocumet2

Автор: ishimcity 14.3.2009, 21:47
MetalFan Спасибо дружище буду ковырять, если тебя незатруднит,немог бы примерчик небольшой подкинуть буду примного блогадарен

Автор: MetalFan 14.3.2009, 22:10
а слабо поиском по форуму поискать по приведенным словам?  smile 

Автор: ishimcity 18.3.2009, 08:29
что то я невьезжаю в ээту тему...Ладно напишу как я делаю)))

Код

find:='жизнь' // здесь слово после которого нам нужна информация. 1 символ
 txt:='здесь текст в котором ищем' ; // привет ну как твоя жизнь? хорошо когда жизнь!
   begin
   sPos := Pos(find, txt); 
if sPos >0 then
         begin
  ltxt := Length(find);
      Inc(sPos, ltxt);
     riz :=Copy(sss, sPos,1); // здесь получаю ? а продолжение? слова то у нас 2 а вдруг 10 слов в тексте?
 
      end;
With ListView.items.add do
Begin
Caption:=riz; // выводим в ListView
end;



Но как получить мне в тексте дальше !
Я так понимаю нужен цикл? 
чтобы сначало мне вывело ? а затем !

Автор: MetalFan 18.3.2009, 15:00
качай, если еще нет, http://regexpstudio.com/TRegExpr/TRegExpr.html.
вот примерный код, чтоб слово после "жизнь" брал...
остальное сам додумаешь. почитай русский хелп к регуляркам.
Код

var
  lRE : TRegExpr;
begin
  lRE := TRegExpr.Create;
  try
    lRE.Expression := 'жизнь\W*?(\w+)\W?';
    lRE.WordChars := lRE.WordChars + 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'+'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'; 
    if lRE.Exec( 'привет ну как твоя жизнь? хорошо когда жизнь!' ) then
      ShowMessage( lRE.Match[1] );
  finally
    lRE.Free;
  end;


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)