Имя: Пароль:
1C
 
Парсер HTML
0 Python
 
15.10.09
16:12
кто может посоветовать как сделать Парсер HTML
1 ДенисЧ
 
15.10.09
16:14
Парсер.Сделать(Перечисления.ТипыПарсеров.HTML);
Сообщить("Мы сделали парсер!");
2 Python
 
15.10.09
16:17
(1) Парсер - а где ты взял. шутиш.
А по делу можна
Хоть на подобии XML
3 b4rs30
 
15.10.09
16:18
(2) Ппц. Вот он. Русския язык.
4 Fragster
 
гуру
15.10.09
16:18
а чем полеHTMLдокумента и иже с ним не устраивает?
5 zak555
 
15.10.09
16:18
Найти() + Сред() + Лев() + Прав() + ...
6 Python
 
15.10.09
16:20
(4) да я взял  полеHTMLдокумента вытянул из него весь текст - а как вытянуть то что в тексте
7 Python
 
15.10.09
16:21
(5) пока так и мучаюсь,думал может кто ище знает чтото объектное
8 Fragster
 
гуру
15.10.09
16:21
(6) пля....
9 Fragster
 
гуру
15.10.09
16:22
срочно учить DOM и курить СП в разделе поля html документа...
10 TheNewOne
 
15.10.09
16:22
А может заюзать парсер XML ?
11 Python
 
15.10.09
16:23
(8) а имено ...
12 Fragster
 
гуру
15.10.09
16:23
(10) не каждый валидный html является валидным xml
13 Fragster
 
гуру
15.10.09
16:23
(11) ты так и не показал своего творения, юзающего OprenGL
14 acsent
 
15.10.09
16:24
Из полеHTMLдокумента можно получить обычный текст без тегов
15 Гений 1С
 
гуру
15.10.09
16:24
скачай PIM и посмотри, как работает мамбирование.
или кури Новый ComОбъект("HTMLFile");
16 Python
 
15.10.09
16:27
ComОбъект("HTMLFile") это интересно
17 Python
 
15.10.09
18:36
(11) какое творение в OprenGL
18 Ковычки
 
15.10.09
18:38
смени ник
19 1c_asp
 
15.10.09
18:45
(0) Я помницца делал так :
Написал фунцию ПолучитьСледующуюСекцию(текстХТМЛ)
в которую передается текст ХТМЛ а возвращается кусок кода начиная с первого найденного тега и заканчивая его окончанием.  Переданный текст укорачивается на эту секцию.

И вызывая эту функцию  и постепенно скармливая ей полученные куски разбирал ХТМЛ до запчастей. А запчасти уже анализировал
20 1c_asp
 
15.10.09
18:53
о... нашел старый код...

// Из HTML строки получает указанную секцию. Используется для разбора HTML
// Из переданной строки указанная секция вырезается и возвращается
// Начало секции не должно быть закрыто
//
//Пример использования
//// получение таблицы
//секц = ПолучитьСекцию(html_строка,"<TABLE","</TABLE>");
//// обход по строкам
//Если секц <> "" тогда
//    // цикл по строкам
//    Пока 1 = 1 цикл
//        стрсекц = ПолучитьСекцию(секц,"<TR","</TR>");          
//        Если стрСекц = "" тогда
//           прервать;
//        конецесли;
//    конеццикла;
//конецесли;

Функция глПолучитьСекциюHTML(Тхт,НачалоСекции,КонецСекции) Экспорт
   НачПоз = найти(тхт,НачалоСекции);
   // отрезаем от текста все, что шло до этой секции
   Тхт = Сред(тхт,начПоз + стрдлина(НачалоСекции));
   НачПоз = найти(тхт,">");
   тхт = Сред(тхт,НачПоз+1);
   КонПоз = найти(тхт,КонецСекции);
   Секц = лев(тхт,КонПоз-1);
   // отрезаем от текста указанную секцию
   Тхт = Сред(тхт,КонПоз+стрДлина(КонецСекции));
   возврат секц;
КонецФункции
21 Ковычки
 
15.10.09
18:56
(20) это чо ?
22 Rie
 
15.10.09
18:57
(20) И выкинь. Он неправильный.
Не учитываешь вложенность.
23 1c_asp
 
15.10.09
19:02
(22) Ну покажи нам что нибудь свое, более типа правильное. Или ты мастер попиз...ть тока ?
24 php5
 
15.10.09
19:03
регулчрные выражения можно еще заюзать для разбора.
25 Ковычки
 
15.10.09
19:04
(24) ник смени
26 1c_asp
 
15.10.09
19:07
(22) 63 года а ума не нажил. Значит так дурнем и помрешь.
Судить о том, правильный код или неправильный можно только зная задачу, для которой он предназначен. Да, код в (20) не учитывает вложенности, однако задачу разбора простого HTML он выполняет.
27 Rie
 
15.10.09
19:13
(26) Мальчик! В (19), (20) ты давал ответ на вопрос в (0). Твоя программа _не является_ HTML-парсером. Так что ты дал человеку неправильный ответ.
Когда тебе указали на ошибку - ты начал гнуть пальцЫ.

Тьфу...
28 1c_asp
 
15.10.09
19:19
(27) дурень, ты ж не знаешь, какая задача стоит. Вполне возможно, что (20) хватит
29 Rie
 
15.10.09
19:21
Пионэры разбушевались...
30 Гений 1С
 
гуру
15.10.09
19:54
в книге знаний есть парсер XML, HTML он на ура вытянет, если нужно именно свою функцию юзать.
31 Rie
 
15.10.09
20:02
(30)
<p>Ты это гарантируешь?<br>Или чего-то не учитываешь?</p>
32 Fragster
 
гуру
15.10.09
20:42
(17) любое
(24) нифига, регулярки - конечные автоматы, а html - люьой можети быть
(31) <i>ничего</i> не <i>учитывается</i>

блин, почему стандортный механизм доступа к DOM через полеHTMLдокумента никому не нравится? тогда internetexplorer.application заюзайте...
33 Python
 
21.10.09
17:47
ДокументХТМЛ = ЭлементыФормы.ПолеHTMLДокумента.Документ;
ТелоДокумента = ДокументХТМЛ.body;
   
   //Перебираем все Подчиненые элементы для тела документа
   Для каждого елемент из ТелоДокумента.getElementsByTagName("*")   Цикл
       
       //елемент.tagName - наименование елемента;
       ИмяТега    = елемент.tagName;
       //Текст который в теге
       ТекстТега    = елемент.outerText;
       //Проверяем тест в теге с которого нам надо начать читать
Если ТекстТега = "Сводная таблица индексов инфляции" Тогда
           
           НомерСтроки = 0;
           НомерКолонки = 0;
           
       КонецЕсли;
       
       //Новая строка
       Если ИмяТега = "TR" Тогда
           
           НомерСтроки = НомерСтроки + 1;
                   
       КонецЕсли;
       
       //Первая колонка
       //Одна ячейка з названием реквизита
       Если ИмяТега = "TH" Тогда
           
           НомерКолонки = 1;
           
       КонецЕсли;
       
       //Следущие колонки
       //Ячека з данными реквизита
       Если ИмяТега = "TD" Тогда
           
           НомерКолонки = НомерКолонки + 1;            
                       
       КонецЕсли;
       
       //Проверяем или нам надо дальше читать
       Если ИмяТега = "P" тогда
           
           Прервать;
           
       КонецЕсли;    
       
       МассивДанных(НомерСтроки,НомерКолонки) = ТекстТега;
   КонецЦикла;
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс