Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/20: Рейтинг темы: голосов - 20, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 20.12.2011
Сообщений: 6

Необходим совет по парсингу HTML

20.12.2011, 10:26. Показов 4514. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Не программировал на делфях со времен учебы в универе и тем более не связывался с HTML.

Смысл задачи такой:
Есть некая страничка на сайте в которой есть таблица. Мне нужно данные из этой таблице прочитать и
создать некую БД или просто файл, в которую(ый) записываются прочитанные данные, чтобы при последующем чтении уже вести лог изменений данных сайта и имеющихся данных у меня.
Подскажите с чего начать или в каком направлении копать.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.12.2011, 10:26
Ответы с готовыми решениями:

Требуется совет по парсингу XML документов
Есть вот такой код string a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24,...

Необходим совет новичку!
Всем привет!!! Прошу помочь советом, я решил написать не большую базу двнных для компании. Собрал данные распределил по таблице Excel но...

Необходим совет по компонентам
Добрый день, уважаемые знатоки. Нашел пару хороших интерфейсов для своего будущего курс. проекта, и пару идей хочу взять. С шарпом...

21
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
06.02.2012, 12:58
Студворк — интернет-сервис помощи студентам
вот с офф сайта скачал, нормально работает
Вложения
Тип файла: rar regexpr_RU.rar (84.4 Кб, 71 просмотров)
1
 Аватар для Mawrat
13117 / 5898 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
06.02.2012, 13:59
Выскажу своё мнение.
Я бы для решения этой задачи применил работу с DOM моделью HTML документа. DOM - Document Object Model. Это "родной" способ для веб-браузеров. И он проще (и гибче, я считаю), чем исследование с помощью регулярных выражений.
---
Вот например, как можно решить поставленную задачу:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
//Загрузка HTML документа из строковой переменной.
function LoadHTMLContent(aWb : TWebBrowser; const aStr : String) : Variant;
begin
  Result := aWb.OleObject.document;
  //Если объект документа оказался не созданным, то создаём его.
  if TVarData(Result).VDispatch = nil then begin
    //Создаём новый документ с пустым содержанием.
    aWb.Navigate('about:blank');
    Result := aWb.OleObject.document;
  end;
  //Загружаем в документ нужный HTML код из Memo1.
  Result.open('text/html', 'replace');
  Result.write(aStr);
  Result.close;
end;
 
//Создание нового документа в TWebBrowser.
procedure TForm1.Button1Click(Sender: TObject);
begin
  LoadHTMLContent(WebBrowser1, Memo1.Text);
end;
 
//Поиск элементов с заданными параметрами.
procedure TForm1.Button2Click(Sender: TObject);
var
  Doc, Arr, Elem : Variant;
  STag, SClass : String;
  i : Integer;
begin
  //Ссылка на документ.
  Doc := WebBrowser1.OleObject.document;
  if TVarData(Doc).VDispatch = nil then begin
    ShowMessage('Документ не задан. Действие отменено.');
    Exit;
  end;
 
  //Параметры поиска.
 
  //Тег.
  STag := Edit1.Text;
  if STag = '' then begin
    ShowMessage('Тег не задан. Действие отменено.');
    Exit;
  end;
  //Имя класса.
  SClass := Edit2.Text;
  if SClass = '' then begin
    ShowMessage('Тег не задан. Действие отменено.');
    Exit;
  end;
 
  //Решение задачи.
 
  Memo2.Clear;
  //Получаем список всех элементов с заданным тегом.
  Arr := Doc.getElementsByTagName(STag);
  //Перебираем элементы этого списка и выбираем те, которые имеют
  //имя класса, совпадающего с заданным.
  for i := 0 to Arr.length - 1 do begin
    //Ссылка на очередной элемент.
    Elem := Arr.item(i);
    //Если имя класса совпадает с заданным, то распечатываем
    //сведения об этом элементе.
    if Elem.className = SClass then begin
      Memo2.Lines.Add(
        'Тег: "' + Elem.tagName + '"'
        + ', класс: "' + Elem.className + '"'
        + ', текст: "' + Elem.innerHTML + '"'
      );
    end;
  end;
end;
Для справки по модели HTML DOM: JavaScript and HTML DOM Reference. Это очень удобный справочник. Там даже есть он-лайн редактор для проверки кода.
По HTML DOM также и на русском языке много материалов в сети.
Миниатюры
Необходим совет по парсингу HTML  
Вложения
Тип файла: rar WorkWithHTMLDOM.rar (195.5 Кб, 176 просмотров)
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.02.2012, 13:59

Необходим совет по сборке
Доброго времени суток! Господа, необходим совет по сборке системного блока. Прикрепил наброски без БП. В дальнейшем планируется...

Необходим совет экспертов
Сайт супруги Гастроэнтеролог в Астане: https://gastro-doc.kz/ Сайт не как не хочет подниматься с ТОП-20, нужен совет, что добавить...

Необходим совет по дизайну
Есть интернет магазин - stroidomcompany.ru на движке shop-script, определяюсь с цветовой гаммой: хочу всю синюю графику заменить зелёной,...

Необходим совет по шаблонам
Доброго всем времени суток! Изучаю шаблоны - по ходу дела вопросы на понимание темы: 1. Учитывая прототип для шаблон функции: ...

Рекурсия, необходим совет
Определите функцию, вычисляющую суммы положительных и отрицательных элементов одноуровневого числового списка. Решение должно быть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru