Полезная информация

Многие проблемы быстрее решаются поиском по форуму и чтением FAQ, чем созданием новой темы и томительным ожиданием ответа.

№116-02-2006 17:30:06

Yan
Участник
 
Группа: Extensions
Откуда: Москва
Зарегистрирован: 27-02-2005
Сообщений: 1019

Как получить DOM-дерево из HTML-кода документа?

С помощью XMLHttpRequest получается код HTML-документа. Обрабатывать его "вручную" очень неудобно/долго/неинтересно, поэтому хочется получить DOM-дерево страницы. Но т.к. это HTML, а не xml, то DOMParser использовать не получается.
Можно воспользоваться innerHTML или createContextualFragment, оба способа аналогичны, результат достигается. Но при этом проявляется очень существенный недостаток - подгружаются все картинки, внешние css-стили, js-скрипты, и другие встроенные в документ файлы - идет совершенно ненужный трафик. (

Так вот вопрос: можно ли избежать этого "паразитного" трафика? Может быть есть другие способы парсинга HTML-кода, про которые я не знаю?

Отсутствует

 

№216-02-2006 18:31:44

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
Веб-сайт

Re: Как получить DOM-дерево из HTML-кода документа?

Довольно экзотическое решение: http://xpoint.ru/forums/programming/XUL … 4395.xhtml


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№316-02-2006 19:41:31

Yan
Участник
 
Группа: Extensions
Откуда: Москва
Зарегистрирован: 27-02-2005
Сообщений: 1019

Re: Как получить DOM-дерево из HTML-кода документа?

Попробовал loadURI ("data:text/html,...), но к сожалению, не совсем то. Стили и скрипты там не подгружались только из-за того, что пути к ним были относительно указаны. Если же путь абсолютный, то всё подгрузится. Таким образом преимущества никакого - при innerHTML файлы с относительными путями тоже не грузились.

Отсутствует

 

№419-02-2006 16:28:48

Mash
Участник
 
Группа: Extensions
Зарегистрирован: 09-04-2005
Сообщений: 620
Веб-сайт

Re: Как получить DOM-дерево из HTML-кода документа?

Решение "в лоб": перед тем, как сделать innerHTML|createContextualFragment -- пройтись регулярками и поменять все import/src/data/href/.. (например, на _import/_src/_data/_href/_..)

Отсутствует

 

№519-02-2006 19:41:07

Yan
Участник
 
Группа: Extensions
Откуда: Москва
Зарегистрирован: 27-02-2005
Сообщений: 1019

Re: Как получить DOM-дерево из HTML-кода документа?

Mash
Я тоже об этом думал. Правда хотел "http://" на "#http://" менять, но наверное, действительно лучше поменять имена атрибутов.

Отсутствует

 

№601-03-2006 21:39:10

Mash
Участник
 
Группа: Extensions
Зарегистрирован: 09-04-2005
Сообщений: 620
Веб-сайт

Re: Как получить DOM-дерево из HTML-кода документа?

Случайно наткнулся на nsIStreamConverter. Если ещё актуально, то посмотрите в эту сторону, вдруг поможет.
P.S. Сам не пробовал.

Отсутствует

 

№701-03-2006 23:24:32

Yan
Участник
 
Группа: Extensions
Откуда: Москва
Зарегистрирован: 27-02-2005
Сообщений: 1019

Re: Как получить DOM-дерево из HTML-кода документа?

Mash
Посмотрел, но что-то до меня никак не доходит, как это использовать на практике. :(

Отсутствует

 

№802-03-2006 01:23:58

Mash
Участник
 
Группа: Extensions
Зарегистрирован: 09-04-2005
Сообщений: 620
Веб-сайт

Re: Как получить DOM-дерево из HTML-кода документа?

Насчёт nsIStreamConverter -- поторопился и ступил, категорически. :)

Вообще у меня мысль шла в направлении -- текст -> чистка -> работа с xml (т.е. далее пользуем DOMParser).

Пытался было посмотреть как Mozilla преобразовывает полученные данные в html/dom, но сходу не получилось, глаза уже красные. "mozilla_source\parser\htmlparser\" есть, а толку-то...

В принципе, стадию чистки можно пройти, прибегнув к сторонним средствам: tidy. С его помощью преобразовываем данные (текст) в корректный xhtml и спокойно используем DOMParser. Есть и исходники, и бинарники (там dll от силы килобайт на 300 выйдёт), и в расширениях уже давно используют... Другое дело, стоит ли заморачиваться с этим?

Отредактировано Mash (02-03-2006 01:24:39)

Отсутствует

 

№902-03-2006 02:12:32

Yan
Участник
 
Группа: Extensions
Откуда: Москва
Зарегистрирован: 27-02-2005
Сообщений: 1019

Re: Как получить DOM-дерево из HTML-кода документа?

Mash

В принципе, стадию чистки можно пройти, прибегнув к сторонним средствам: tidy. С его помощью преобразовываем данные (текст) в корректный xhtml и спокойно используем DOMParser. Есть и исходники, и бинарники (там dll от силы килобайт на 300 выйдёт), и в расширениях уже давно используют... Другое дело, стоит ли заморачиваться с этим?

В теории это всё интересно конечно, но на практике действительно заморачиваться не стоит. :)
Замена имён атрибутов вполне подходит, так что можно считать задачу решенной.

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]