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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.06.2010, 23:43
arach arach вне форума
Прохожий
 
Регистрация: 17.06.2010
Сообщения: 39
Репутация: 10
По умолчанию Выдрать текст с сайта из тегов

Имеется сайт, например 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  
Старый 17.06.2010, 23:53
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,100
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

можно получить текст страницы через 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  
Старый 18.06.2010, 06:18
Аватар для NekitoSSSS
NekitoSSSS NekitoSSSS вне форума
Начинающий
 
Регистрация: 02.05.2009
Адрес: Башкортостан, г.Благовещенск
Сообщения: 142
Версия Delphi: XE
Репутация: 13
По умолчанию

а не проще ли использовать регулярные выражения??))) это ж очень удобней будет... и быстрей... и не надо даже вычислять все эти отступы, ведь на выходе с точностью 100% мы будем получать готовый список чисел)
Ответить с цитированием
  #4  
Старый 18.06.2010, 10:54
arach arach вне форума
Прохожий
 
Регистрация: 17.06.2010
Сообщения: 39
Репутация: 10
По умолчанию

А по-подробнее? Спасибо!
Ответить с цитированием
  #5  
Старый 18.06.2010, 11:12
arach arach вне форума
Прохожий
 
Регистрация: 17.06.2010
Сообщения: 39
Репутация: 10
По умолчанию

А по-подробнее? Спасибо!
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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