8.х Как парсить HTML документ?

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Vladius, 22 июл 2014.

  1. TopicStarter Overlay
    Vladius
    Offline

    Vladius Опытный в 1С

    Регистрация:
    10 ноя 2010
    Сообщения:
    663
    Симпатии:
    3
    Баллы:
    29
    Есть html документ с которого надо вытащить данные. Там есть табличка. Как получить доступ к таблице? Ничего понять не могут...(
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.767
    Симпатии:
    509
    Баллы:
    204
    Какие у таблицы теги-то;) -Cigar-?
  3. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    в html вроде table
  4. TopicStarter Overlay
    Vladius
    Offline

    Vladius Опытный в 1С

    Регистрация:
    10 ноя 2010
    Сообщения:
    663
    Симпатии:
    3
    Баллы:
    29
    В ЭлементыФормы.ПолеHTMLДокумента.Документ.body.all куча хлама который фиг разберешь. И тек TABLE встречается там не один раз.
    --- Объединение сообщений, 22 июл 2014 ---
    Вот именно эти данные и нужны. Только фиг знает как их парсить

    <TABLE id=z_eu_u2 class=prttable>
    <COLGROUP>
    <COL id=z_eu_v2 class=print_tables align=center width=60>
    <COL id=z_eu_03 class=print_tables align=left width=180>
    <COL id=z_eu_13 class=print_tables align=left width=180>
    <COL id=z_eu_23 class=print_tables align=right width=90>
    <COL id=z_eu_33 class=print_tables align=right width=90>
    <COL id=z_eu_43 class=print_tables align=right width=90>
    <COL id=z_eu_53 class=print_tables align=center width=20>
    <COL id=z_eu_63 class=print_tables align=left width=145>
    <COL id=z_eu_73 class=print_tables align=left width=145></COLGROUP>
    <THEAD id=z_eu_83>
    <TR id=z_eu_93 class=header>
    <TD id=z_eu_a3 class=print_tables_header rowSpan=2 align=center>Дата проводки</TD>
    <TD id=z_eu_c3 class=print_tables_header colSpan=2 align=center>Счет</TD>
    <TD id=z_eu_e3 class=print_tables_header rowSpan=2 align=center>Сумма по дебету</TD>
    <TD id=z_eu_g3 class=print_tables_header rowSpan=2 align=center>Сумма по кредиту</TD>
    <TD id=z_eu_i3 class=print_tables_header rowSpan=2 align=center>№ документа</TD>
    <TD id=z_eu_k3 class=print_tables_header rowSpan=2 align=center>ВО</TD>
    <TD id=z_eu_m3 class=print_tables_header rowSpan=2 align=center>Банк (БИК и наименование)</TD>
    <TD id=z_eu_o3 class=print_tables_header rowSpan=2 align=center>Назначение платежа</TD></TR>
    <TR id=z_eu_q3 class=header>
    <TD id=z_eu_r3 class=print_tables_header align=center>Дебет</TD>
    <TD id=z_eu_t3 class=print_tables_header align=center>Кредит</TD></TR></THEAD>
    <TBODY id=z_eu_v3>
    <TR id=z_eu_04>
    <TD id=z_eu_14 class=print_tables align=center>02.06.2014</TD>
    <TD id=z_eu_34 class=print_tables align=left>40702810492000000087<BR>0037058370 ООО "ВЛАДИКОМ-КРЫМ"</TD>
    <TD id=z_eu_54 class=print_tables align=left>40201810735100000003<BR>0000000000<BR>Казначейская служба РК</TD>
    <TD id=z_eu_74 class=print_tables align=right>1 720,00</TD>
    <TD id=z_eu_94 class=print_tables align=right>&nbsp;</TD>
    <TD id=z_eu_b4 class=print_tables align=right>4</TD>
    <TD id=z_eu_d4 class=print_tables align=center>01</TD>
    <TD id=z_eu_f4 class=print_tables align=left>БИК 043510001, ОТДЕЛЕНИЕ РЕСПУБЛИКА КРЫМ Г. СИМФЕРОПОЛЬ</TD>
    <TD id=z_eu_h4 class=print_tables align=left>*;101;37058370;11010100;288;ООО "Владиком-Крым", перечисление НДФЛ за март, апрель 2014 года</TD></TR>
    <TR id=z_eu_j4>
    <TD id=z_eu_k4 class=print_tables align=center>02.06.2014</TD>
    <TD id=z_eu_m4 class=print_tables align=left>40702810492000000087<BR>0037058370 ООО "ВЛАДИКОМ-КРЫМ"</TD>
    <TD id=z_eu_o4 class=print_tables align=left>40702810392000000077<BR>0034836060<BR>ООО "СИМБИАН"</TD>
    <TD id=z_eu_q4 class=print_tables align=right>2 000,00</TD>
    <TD id=z_eu_s4 class=print_tables align=right>&nbsp;</TD>
    <TD id=z_eu_u4 class=print_tables align=right>1</TD>
    <TD id=z_eu_05 class=print_tables align=center>01</TD>
    <TD id=z_eu_25 class=print_tables align=left>БИК 044525585, КРЫМСКИЙ ФИЛИАЛ РНКБ (ОАО) Г. СИМФЕРОПОЛЬ</TD>
  5. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.767
    Симпатии:
    509
    Баллы:
    204
    Это CSS
  6. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    во-во, я смотрю что больно много описаний для обычного html
  7. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.767
    Симпатии:
    509
    Баллы:
    204
    Тут больше на XML смахивает:)
  8. TopicStarter Overlay
    Vladius
    Offline

    Vladius Опытный в 1С

    Регистрация:
    10 ноя 2010
    Сообщения:
    663
    Симпатии:
    3
    Баллы:
    29
    Хотите сказать это несовсем html? :) Файлик прикрепил, посмотрите пожалуйста!

    Вложения:

  9. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    сдается мне что это JavaScript
  10. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.767
    Симпатии:
    509
    Баллы:
    204
    Мдаааа, походу нужно знать "служебные" символы, которые отвечают за размещение данных.
    Откройте в браузере исходный код. Задача будет не тревиальной.
  11. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    в html
    Table, td, tr - эх давно это было...
  12. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.767
    Симпатии:
    509
    Баллы:
    204
    Яна, это все есть, просто таблица форматированная уже выдается клиенту.
    --- Объединение сообщений, 22 июл 2014 ---
    Если есть возможность экспортировать выписку в XML, то лучше через нее, там хоть структура есть.
  13. TopicStarter Overlay
    Vladius
    Offline

    Vladius Опытный в 1С

    Регистрация:
    10 ноя 2010
    Сообщения:
    663
    Симпатии:
    3
    Баллы:
    29
    Спасибо ребят, короче пошлю их лесом с этим файлов, пусть дают нормальный файл.
  14. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    проще всего загрузить текст html в ДокументDOM, а потом попользоваться тем, что все ячейки и колонки помечены идентификаторами - и отбирать элементы из документdom
    --- Объединение сообщений, 22 июл 2014 ---
    в качестве примера
    Код:
    Чтение = Новый ЧтениеHtml;
    Чтение.УстановитьСтроку(ДанныеТекущейСтраницы, "UTF8");
    Построитель = Новый ПостроительDOM;
    Документ = Построитель.Прочитать(Чтение);
    
    Блоки = ПолучитьБлокиПоКлассу(Документ, "content");
    Если Блоки.Количество()=0 Тогда
        Возврат Неопределено;
    Иначе
        Возврат Блоки[0];
    КонецЕсли;
    
    возвращает первый тэг, у которого атрибут class равен "content"
    --- Объединение сообщений, 22 июл 2014 ---
    а дальше - работаем с этими блоками как с обычными элементами DOM
    --- Объединение сообщений, 22 июл 2014 ---
    упс, самое интересное не показал :)

    Код:
    Функция ПолучитьБлокиПоКлассу(Документ, Класс)
       
        МассивБлоков = Новый Массив;
       
        СписокЭлементов = Документ.ПолучитьЭлементыПоИмени("div");
        Для Каждого Элемент Из СписокЭлементов Цикл
            АтрибутКласс = Элемент.ПолучитьАтрибут("class");
            Если АтрибутКласс<>Неопределено Тогда
                Если АтрибутКласс=Класс Тогда
                    МассивБлоков.Добавить(Элемент);
                КонецЕсли;
            КонецЕсли;
        КонецЦикла;
       
        Возврат МассивБлоков;
       
    КонецФункции
    
    Последнее редактирование: 22 июл 2014

Поделиться этой страницей