![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Имеется сайт, например http://siteru. На страничке index.php имеется список вида:
12312 45465 78787 В коде страницы все это находится между тегами <li> <li/> Вот так: <ul class="icqList"> <li>12312</li> <li>45465</li> <li>78787</li> Как выдрать эту информацию с сайта и отпарсить, чтобы На выходе был список вида: 12312 45465 78787 и т.п Я новичек, прошу помощи, возможно нужен цикл while. Исплоьозовать IDhttp? как записать это в переменную? |
|
#2
|
|||
|
|||
|
можно получить текст страницы через IdHTTP.Get.
Далее можно делать 2мя способами. 1. Использовать MSHTML - загрузить туда текст и далее искать по объектной можели. 2. попробовать написать свой простой парсер. Код:
S := IdHTTP.Get('www.site.ru'); // не уверен в синтаксисе - проверь.
// вырезаем список <li>...</li>
S := Copy(S,Pos('<ul class="icqList">,S) + Length('<ul class="icqList">'), Length(S));
S := Copy(S,1,Pos('</ul>',S)-1);
// Разбор номеров
Idx := Pos('<li>',S);
While Idx > 0 Do
Begin
// Здесь должно быть содержимое элемента списка
Buf := Copy(S,Idx+4,Pos('</li>',S)-4-1);
// Удаляем обработанный кусок
S := Copy(S,Pos('</li>',S)+5,Length(S));
Idx := Pos('<li>',S);
End;может быть придется подкоректировать смещения при вычислении координат копирования - делал на глазок. |
|
#3
|
||||
|
||||
|
а не проще ли использовать регулярные выражения??))) это ж очень удобней будет... и быстрей... и не надо даже вычислять все эти отступы, ведь на выходе с точностью 100% мы будем получать готовый список чисел)
|
|
#4
|
|||
|
|||
|
А по-подробнее? Спасибо!
|
|
#5
|
|||
|
|||
|
А по-подробнее? Спасибо!
|