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

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

20.12.2011, 10:26. Показов 4560. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru