Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.09.2012, 13:31
morik44 morik44 вне форума
Прохожий
 
Регистрация: 07.09.2012
Сообщения: 10
Репутация: 10
По умолчанию Подскажите как лучше вытащить необходимые данные с HTML

Код HTML:
<br> <table width=100% cellspacing=0 border=0 cellpadding=0><td valign=top width=100%><h3>Супер-лига</h3><table border=0 width=100% cellpadding=4 cellspacing=1 bgcolor=#d3d3d3><tr bgcolor=white><td rowspan=3 bgcolor=#f3f3f3 valign=top><a href=/xml/games/tournaments.php?id=4970671><img src="http://11x11.ru/images/ft_tournament_types/small/61.jpg" border=0 ></a></td><td height=10px class=header><b><a href=/tournaments/4970671>Супер-лига: Железный Дровосек-37790</a> // 07.09.2012 11:50</td><tr bgcolor=white><td valign=top height=50px width=100%><li> <b>Призовой фонд:</b> 10.800<br><li> <b>Длительность:</b> до 64 минут<li> <b>Уровень игрока:</b> 3<li> <b>Опыт футболистам:</b> 200%<li> <b>[b]Участников[/b]:</b> [b]0 из 32[/b]</div></td></tr><tr bgcolor=white><td height=10px ><center><b></b></center><a href=[b]/tournaments/4970671/act=join&step=1 [/b]><b>[присоединиться]</b></a><div align=right><a href=/tournaments/4970671>подробнее..</a></div></td></tr></table><br><table border=0 width=100% cellpadding=4 cellspacing=1 bgcolor=#d3d3d3><tr bgcolor=white><td rowspan=3 bgcolor=#f3f3f3 valign=top><a href=/xml/games/tournaments.php?id=4973598><img src="http://11x11.ru/images/ft_tournament_types/small/3.jpg" border=0 ></a></td><td height=10px class=header><b><a href=/tournaments/4973598>Супер-лига: Игра на принцип-46651</a> // 07.09.2012 12:05</td><tr bgcolor=white><td valign=top height=50px width=100%><li> <b>Призовой фонд:</b> 5.300<br><li> <b>Длительность:</b> до 71 минут<li> <b>Уровень игрока:</b> 3<li> <b>Опыт футболистам:</b> 200%<li> <b>[b]Участников[/b]:</b>[b] 0 из 16[/b]</div></td></tr><tr bgcolor=white><td height=10px ><center><b></b></center><a href=[b]/tournaments/4973598/act=join&step=1[/b] ><b>[присоединиться]</b></a><div align=right><a href=/tournaments/4973598>подробнее..</a></div></td></tr></table><br><table border=0 width=100% cellpadding=4 cellspacing=1 bgcolor=#d3d3d3><tr bgcolor=white><td rowspan=3 bgcolor=#f3f3f3 valign=top><a href=/xml/games/tournaments.php?id=4970554><img src="http://11x11.ru/images/ft_tournament_types/small/56.jpg" border=0 ></a></td><td height=10px class=header><b><a href=/tournaments/4970554>Супер-лига: Новый Полигон-43899</a> // 07.09.2012 12:10</td><tr bgcolor=white><td valign=top height=50px width=100%><li> <b>Призовой фонд:</b> 4.900<br><li> <b>Длительность:</b> до 57 минут<li> <b>Уровень игрока:</b> 3<li> <b>Опыт футболистам:</b> 200%<li> <b>[b]Участников[/b]:</b> [b]3 из 16[/b]</div></td></tr><tr bgcolor=white><td height=10px ><center><b></b></center><a [b]href=/tournaments/4970554/act=join&step=1[/b] ><b>[присоединиться]</b></a><div align=right><a href=/tournaments/4970554>подробнее..</a></div></td></tr></table><br><table border=0 width=100% cellpadding=4 cellspacing=1 bgcolor=#d3d3d3><tr bgcolor=white><td rowspan=3 bgcolor=#f3f3f3 valign=top><a href=/xml/games/tournaments.php?id=4973288><img src="http://11x11.ru/images/ft_tournament_types/small/55.jpg" border=0 ></a></td><td height=10px class=header><b><a href=/tournaments/4973288>Супер-лига: Мастерс-40476</a> // 07.09.2012 12:15</td><tr bgcolor=white><td valign=top height=50px width=100%><li> <b>Призовой фонд:</b> 5.300<br><li> <b>Длительность:</b> до 71 минут<li> <b>Уровень игрока:</b> 3<li> <b>Опыт футболистам:</b> 200%<li> <b>[b]Участников[/b]:</b> [b]1 из 16[/b]</div></td></tr><tr bgcolor=white><td height=10px ><center><b></b></center><a href=[b]/tournaments/4973288/act=join&step=1[/b] ><b>[присоединиться]</b></a><div align=right><a href=/tournaments/4973288>подробнее..</a></div></td></tr></table><br><table border=0 width=100% cellpadding=4 cellspacing=1 bgcolor=#d3d3d3><tr bgcolor=white><td rowspan=3 bgcolor=#f3f3f3 valign=top><a href=/xml/games/tournaments.php?id=4970598><img src="http://11x11.ru/images/ft_tournament_types/small/57.jpg" border=0 ></a></td><td height=10px class=header><b><a href=/tournaments/4970598>Супер-лига: Титанический турнир-26430</a> // 07.09.2012 12:20</td><tr bgcolor=white><td valign=top height=50px width=100%><li> <b>Призовой фонд:</b> 10.600<br><li> <b>Длительность:</b> до 64 минут<li> <b>Уровень игрока:</b> 3<li> <b>Опыт футболистам:</b> 200%<li> <b>[b]Участников[/b]:</b> [b]0 из 32[/b]</div></td></tr><tr bgcolor=white><td height=10px ><center><b></b></center><a href=[b]/tournaments/4970598/act=join&step=1 [/b]><b>[присоединиться]</b></a><div align=right><a href=/tournaments/4970598>подробнее..</a></div></td></tr></table><br></td><td valign=top style='padding-top:0px;padding-left:10px'><table border=0 cellspacing=0 cellpadding=0 bgcolor=#EBEBEB width=160px> <tr>
Админ: Пользуемся тегами для оформления кода!

Добрый день уважаемые, подскажите плиз, каким путём целесообразно вытащить необходимые мне данные выделенные жирным шрифтом со страницы. Т.е. мне нужно: нашёл первое слово 'Участников' , нашёл количество участников '0 из 32',проанализировал сколько и нашёл строку со ссылкой '/tournaments/4970598/act=join&step=1'.

Как это лучше реализовать?

Последний раз редактировалось Admin, 07.09.2012 в 13:46.
Ответить с цитированием
  #2  
Старый 07.09.2012, 13:42
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

его можно отнести к правильно построеному XML? честно говоря самому лень это проверить по понятной причине)
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 07.09.2012, 13:46
morik44 morik44 вне форума
Прохожий
 
Регистрация: 07.09.2012
Сообщения: 10
Репутация: 10
По умолчанию

это кусок исходного кода в браузерной игрухе.
Ответить с цитированием
  #4  
Старый 07.09.2012, 13:46
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от NumLock
его можно отнести к правильно построеному XML? честно говоря самому лень это проверить по понятной причине)
Нет, не является. По правилам XML все теги должны закрываться, а здесь например тег img незакрыт.
Ответить с цитированием
  #5  
Старый 07.09.2012, 13:47
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

См. последнюю ссылку в подписи.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #6  
Старый 07.09.2012, 13:51
Аватар для Lost_Fish
Lost_Fish Lost_Fish вне форума
Начинающий
 
Регистрация: 21.07.2011
Адрес: Новосибирск
Сообщения: 103
Версия Delphi: Delphi 7,XE2
Репутация: выкл
По умолчанию

RegExp тебе в помощь
http://forum.vingrad.ru/articles/topic-213075.html
Ответить с цитированием
Этот пользователь сказал Спасибо Lost_Fish за это полезное сообщение:
morik44 (07.09.2012)
  #7  
Старый 07.09.2012, 13:51
morik44 morik44 вне форума
Прохожий
 
Регистрация: 07.09.2012
Сообщения: 10
Репутация: 10
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
См. последнюю ссылку в подписи.
Найти б ещё в свободном доступе А так в кратце то не подсказать чтоли?
Ответить с цитированием
  #8  
Старый 07.09.2012, 14:00
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Ты открываешь страницу с помощью TWebBrowser? Можно так же парсить html-страничку его средствами.
Ответить с цитированием
  #9  
Старый 07.09.2012, 14:05
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от morik44
Найти б ещё в свободном доступе
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
morik44 (07.09.2012)
  #10  
Старый 07.09.2012, 14:07
morik44 morik44 вне форума
Прохожий
 
Регистрация: 07.09.2012
Сообщения: 10
Репутация: 10
По умолчанию

Цитата:
Сообщение от poli-smen
Ты открываешь страницу с помощью TWebBrowser? Можно так же парсить html-страничку его средствами.
Да с помощью TWebBrowser
Ответить с цитированием
  #11  
Старый 07.09.2012, 14:32
morik44 morik44 вне форума
Прохожий
 
Регистрация: 07.09.2012
Сообщения: 10
Репутация: 10
По умолчанию

poli-smen, а с помощью TWebBrowser каким методом легче пропарсить?
Ответить с цитированием
  #12  
Старый 07.09.2012, 14:42
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
var
  document: IHTMLDocument2;
begin
  document:=WebBrowser.Document as IHTMLDocument2;
  ...
подробнее: http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
morik44 (07.09.2012)
  #13  
Старый 07.09.2012, 14:53
morik44 morik44 вне форума
Прохожий
 
Регистрация: 07.09.2012
Сообщения: 10
Репутация: 10
По умолчанию

всем спасибо, буду пробовать)
Ответить с цитированием
  #14  
Старый 07.09.2012, 18:45
Аватар для @Rafa3L
@Rafa3L @Rafa3L вне форума
Начинающий
 
Регистрация: 09.11.2011
Адрес: Москва
Сообщения: 144
Версия Delphi: XE2
Репутация: 11216
По умолчанию

Та вашу дивизию...
Чем дальше, тем больше убеждаюсь что порой на форумах можно получить самые бесполезные и неоптимальные ответы.

Человек просит вытащить из однотипной структуры

<b>Участников:</b> 0 из 32</div></td></tr><tr bgcolor=white><td height=10px ><center><b></b></center><a href=/tournaments/4970671/act=join&step=1 ><b>

<b>Участников:</b> 0 из 16</div></td></tr><tr bgcolor=white><td height=10px ><center><b></b></center><a href=/tournaments/4973598/act=join&step=1 ><b>

<b>Участников:</b> 3 из 16</div></td></tr><tr bgcolor=white><td height=10px ><center><b></b></center><a href=/tournaments/4970554/act=join&step=1 ><b>

<b>Участников:</b> 1 из 16</div></td></tr><tr bgcolor=white><td height=10px ><center><b></b></center><a href=/tournaments/4973288/act=join&step=1 ><b>

<b>Участников:</b> 0 из 32</div></td></tr><tr bgcolor=white><td height=10px ><center><b></b></center><a href=/tournaments/4970598/act=join&step=1 ><b>

и все? Наф ему регулярные выражения??
Что еще посоветуете подключить? Асм вставки и джава скрипт? А еще не забываем о модуле на руби. Ни и конечно кнопку твитнуть, куда ж без нее?? А лайкнуть в ФБ? Или опубликовать вконтакте??

Куда мы катимся????
__________________
Помогаю платно.
Помогаю иногда бесплатно.
Ответить с цитированием
Этот пользователь сказал Спасибо @Rafa3L за это полезное сообщение:
morik44 (07.09.2012)
  #15  
Старый 07.09.2012, 19:10
Аватар для @Rafa3L
@Rafa3L @Rafa3L вне форума
Начинающий
 
Регистрация: 09.11.2011
Адрес: Москва
Сообщения: 144
Версия Delphi: XE2
Репутация: 11216
По умолчанию

Код:
procedure TForm1.Button6Click(Sender: TObject);
var
i,n:integer;
s:string;
t1,t2,t3:string;
begin
s:=memo1.Text; //не обязательно с мемо, можно откуда угодно, где есть свойство текст.
n:=length(s)-145; //длина текста
for i:=1 to n do
if s[i]='У' then //ищем номер позиции буквы "У", от него и будем "плясать"
begin
  if s[i+1]='ч' then
  if copy(s,i+2,8)='астников' then
    begin
    if s[i+18]='и' then //21-я после буквы "У", и между "0 из 32"
    begin
      t1:=s[i+16]; // 0 16-я после буквы "У"
      t2:=copy(s,i+21,2); //32  21-я после буквы "У",длина 2
      t3:=copy(s,i+106,36); //ccылка 106-я после буквы "У",длина 36

      memo1.Lines.add(t1); //тут результат. просто показал в мемо, а можно где угодно использовать переменные т1 т2 т3
      memo1.Lines.add(t2);
      memo1.Lines.add(t3);

    end
    else
    begin //этот код на случай если "11 из 32" или "25 из 32" ( если таких случаем нету, выбрасываем проверку на "и"
      t1:=copy(s,i+16,2); 
      t2:=copy(s,i+22,2);
      t3:=copy(s,i+107,36);
      memo1.Lines.add(t1);
      memo1.Lines.add(t2);
      memo1.Lines.add(t3);
    end;
    end;
end;
end;
И того:
получим один быстрый цикл

for i:=1 to n do
if s[i]='У' then

который позволит быстро выделить нужные области.
вероятность что текст игры(я почему то подумал что тут футбольный эмулятор, а оказывается покер-сайт) будет переполнен словами скажем "Ученик", очень мала.
Операторы внутри цикла после if в 99% будут выпоняться в нужных местах.
дополнительная проверка
if copy(s,i+2,8)='астников' then

и вытаскиваем данные:
t1:=copy(s,i+16,2);
t2:=copy(s,i+22,2);
t3:=copy(s,i+107,36);

И того: мы получаем быструю, понятню даже тем, кто только начинает программировать и выучил:
length
for
if
copy
memo.lines.add(


т.е. и ежу понятный код.

Для полного счастья поясняем в комментариях значения постоянных 16,22,107,2,36 (хотя и так понятно, что это места и длины искомых строк).
(если планируется использовать в большой программе оформляем в виде процедуры/функции).

И никакого:
руби,джава, лайка в твиттере и публикации в ФБ, никаких дополнительных библиотек и модулей.
__________________
Помогаю платно.
Помогаю иногда бесплатно.

Последний раз редактировалось @Rafa3L, 07.09.2012 в 20:14.
Ответить с цитированием
Этот пользователь сказал Спасибо @Rafa3L за это полезное сообщение:
morik44 (07.09.2012)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:04.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter