|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Подскажите как лучше вытащить необходимые данные с HTML
Код HTML:
Добрый день уважаемые, подскажите плиз, каким путём целесообразно вытащить необходимые мне данные выделенные жирным шрифтом со страницы. Т.е. мне нужно: нашёл первое слово 'Участников' , нашёл количество участников '0 из 32',проанализировал сколько и нашёл строку со ссылкой '/tournaments/4970598/act=join&step=1'. Как это лучше реализовать? Последний раз редактировалось Admin, 07.09.2012 в 13:46. |
#2
|
||||
|
||||
его можно отнести к правильно построеному XML? честно говоря самому лень это проверить по понятной причине)
Пишу программы за еду. __________________ |
#3
|
|||
|
|||
это кусок исходного кода в браузерной игрухе.
|
#4
|
||||
|
||||
Цитата:
|
#5
|
||||
|
||||
См. последнюю ссылку в подписи.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#6
|
||||
|
||||
RegExp тебе в помощь
http://forum.vingrad.ru/articles/topic-213075.html |
Этот пользователь сказал Спасибо Lost_Fish за это полезное сообщение: | ||
morik44 (07.09.2012)
|
#7
|
|||
|
|||
Цитата:
|
#8
|
||||
|
||||
Ты открываешь страницу с помощью TWebBrowser? Можно так же парсить html-страничку его средствами.
|
#9
|
||||
|
||||
Цитата:
Пишу программы за еду. __________________ |
Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
morik44 (07.09.2012)
|
#10
|
|||
|
|||
Цитата:
|
#11
|
|||
|
|||
poli-smen, а с помощью TWebBrowser каким методом легче пропарсить?
|
#12
|
||||
|
||||
Код:
var document: IHTMLDocument2; begin document:=WebBrowser.Document as IHTMLDocument2; ... Пишу программы за еду. __________________ |
Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
morik44 (07.09.2012)
|
#13
|
|||
|
|||
всем спасибо, буду пробовать)
|
#14
|
||||
|
||||
Та вашу дивизию...
Чем дальше, тем больше убеждаюсь что порой на форумах можно получить самые бесполезные и неоптимальные ответы. Человек просит вытащить из однотипной структуры <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
|
||||
|
||||
Код:
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)
|