Имя: Пароль:
1C
1С v8
Чтение HTML - Запись HTML?
0 abuca
 
03.04.16
13:04
Столкнулся с такой ерундой.
Требования были отпарсить страницу, вытащить фото и описание.
Вроде с задачей справился через DOM, но описание получаю как текст без форматирования Пример:
    УзлыТекст = ДокументDOM.ПолучитьЭлементПоИдентификатору("tab1-post");
    Если НЕ УзлыТекст = Неопределено Тогда
    Для Каждого Узел1 Из УзлыТекст.ДочерниеУзлы Цикл
        Если Узел1.ИмяУзла = "table" Тогда
            Описание = Узел1.ТекстовоеСодержимое;
        КонецЕсли;    
    КонецЦикла;    
    КонецЕсли;

Возвращает текст типа:

 "ПроизводительSamsungМодельLS20D300NH/CIДиагональ, дюймы19,5"Разрешение1366x768 (16:9)Тип подсветкиTFT TNТип ЖК-матрицыWLEDРазъемыVGA (D-Sub)Время отклика, мс5Контрастность600:1Яркость, cd/кв.м200Угол".....

Можно ли его получить не как Текст, а как HTML? Там все это выстраивается красиво в виде таблицы. Чтобы пихнуть в полеHTML и в доп описание товара.
Как крайний вариант, подойдет, конечно, первичное тело HTML, которое я парсю на картинки. Но это, вроде как мовитон.
1 Записьдампа
 
03.04.16
13:18
Гм. А что такое "мовитон"?
2 abuca
 
03.04.16
13:40
Существительное, неодушевлённое, мужской род, 2-е склонение
Корень: -моветон-.

Произношение
МФА: ед. ч. [m?v???t?o?n?], мн. ч. [m?v???t?o?n??]

Семантические свойства
Значение
устар. или ирон. дурной тон; поведение, манеры и поступки, считающиеся неподобающими, неприличными, не принятые в данном обществе; плохой, дурно воспитанный

Синонимы
дурной тон
Антонимы
бонтон; комильфо
Гиперонимы
Гипонимы
невоспитанность

(c) Википедия
3 Записьдампа
 
03.04.16
14:01
Дык там корень через "и", а ты про тут про ерунду какую-то
4 abuca
 
03.04.16
14:04
(3) Ой, простите, только теперь заметил свою безграмотность. Прямо глаз режет, как увидел!
Прошу считать "Мовитон"= "Моветон"
5 Записьдампа
 
03.04.16
14:09
(4) =)
В общем, в данном случае получить вложенный текст с разметкой уже нельзя. Можно его или собрать заново вручную, продолжив парсинг вглубь Узел1, или пересоздать, записав всю иерархию во вспомогательную запись xml или html и получив строку, как результат записи.
6 abuca
 
03.04.16
14:19
(5) Спасибо. Волей-неволей пришел к этому выводу, прежде чем просить помощи бывалых. Но, тем не менее, телоHTML есть как строка, осталось в ней найти тег
<div id="tab1-post" class="good-descript">

В нем ищу:   <table></table>
Все что между кидаю в полеHTML.
7 Юрий Лазаренко
 
03.04.16
15:57
(0) Создай еще один ДокументDOM, выбери элемент основного документа DOM, содержимое которого тебе надо получить, скопируй его и помести копию в новый документ DOM. Затем получай исходный html-код нового документа DOM.
Там, правда, есть какие-то заморочки при копировании элементов DOM, но вроде они проявляются только при копировании внутри одного документа DOM, а когда вставляешь копию в другой документ, то все проходит гладко.
8 abuca
 
03.04.16
16:26
(7)Спасибо, попробую. Реализовал, правда, уже через поиск тегов в текстеHTML. Еще одна заморочка была с Java скриптами, которые вызывали ошибки в ПолеHTML. Убрал блоками типа:

    Строк = Текст.КоличествоСтрок();
    ФлУд = Ложь;
    Для к = 0 По Строк Цикл
        Стр = Текст.ПолучитьСтроку(к);
        Если Найти(Стр,"a href=""javascript:")>0 Тогда
            ФлУд = Истина;
        КонецЕсли;
        Если ФлУд Тогда
            Текст.УдалитьСтроку(к);
        КонецЕсли;
        Если Найти(Стр,"</div>") Тогда
            ФлУд = Ложь;
        КонецЕсли;
    КонецЦикла;

Работает достаточно шустро.
9 abuca
 
03.04.16
16:27
ФлУд = ФлагУдаления сокращенно ))))
10 abuca
 
03.04.16
16:28
... собственно, это надо было удалять, ибо, ошибки выполнения скрипта.

    <td colspan="2">
        <p id="feedbacklink"><a href="javascript:show('feedback');hide('feedbacklink');" target="">Нашли ошибку в описании?</a></p>
        <div class="feedback" id="feedback" style="display:none">
            <p><br/>Отправьте, пожалуйста, найденную ошибку нам, мы её обязательно исправим!<br/></p>
            <br clear="All"/>
            <form method="post">
                <textarea name="lettText" style="width:500px;height:100px;"></textarea>
                <textarea name="lettText2" style="width:500px;height:100px;display:none;"></textarea>
                <br clear="All"/>
                <input id="send_gif" type="image" name="img_id" src="/img/send.gif" value="html" alt="Submit" onclick="hide(\'send_gif\'); this.form.submit();">
            </form>
            <p><br/>Спасибо!</p>
        </div>