2009-02-05 2 views
15

Я хотел бы знать, есть ли простой способ разбора HTML-кода в vb.net. Я знаю, что HTML не является подмножеством sctrict XML, но было бы неплохо, если бы с ним можно было обращаться так. Есть ли что-нибудь, что позволит мне анализировать HTML в XML-виде на VB.net?Как вы разбираете HTML-код в vb.net

+0

Это может помочь нам ответить, если вы укажете, что вы хотите сделать с ним после его анализа. – Rob

+0

На данный момент я заинтересован в возможности выбора всех ссылок, текста и изображений в определенных div. Если класс или id div будет изменяться со страницы на страницу. – tooleb

+0

похоже, что пакет Agility, вероятно, сработает для меня. Есть ли другие варианты ???? – tooleb

ответ

7

Мне нравится Html Agility pack - это очень удобный для разработчиков, бесплатный и исходный код.

+0

Но самодокументационный код для разработчиков - это. Я понимаю, что термин «дружественный к разработчику» может быть очень субъективным, однако я попробовал несколько способов разобрать/изменить код HTML, и этот простой пример (для .NET и без сборов), что вы можете получить и отсутствие документации не меняйте его. Это жестокая реальность. – TcKs

+0

Мне не удалось получить пакет гибкости HTML, чтобы сделать что-нибудь полезное для меня. Все, что я получал, - это прямой вывод HTML в текстовое поле, а не разобранный форматированный HTML. –

+0

@JoelR. Вы сделали что-то ужасно неправильно. Вы читали некоторые уроки об этом? – TcKs

1

Хорошо ли это? Если HTML на самом деле хорошо сформирован, он может быть проанализирован как XML. Если это суп-тег и есть незакрытые элементы, и я бы подумал, что вам придется охотиться за сторонним решением.

+0

Что случилось с доступом к объектной модели документа (dom) с помощью mshtml? –

4

Если ваш HTML соответствует стандартам XHTML, вы можете много раз анализировать и обрабатывать, используя классы пространства имен System.XML.

Если, с другой стороны, если вы анализируете то, что веб-разработчики называют «суп-тег», вам понадобится сторонний парсер, например HTML Agility Pack.

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

12

'добавить прог реф тоже: Microsoft.mshtml

', то на странице:

Imports mshtml 

Function parseMyHtml(ByVal htmlToParse$) As String 
    Dim htmlDocument As IHTMLDocument2 = New HTMLDocumentClass() 
    htmlDocument.write(htmlToParse) 
    htmlDocument.close() 

    Dim allElements As IHTMLElementCollection = htmlDocument.body.all 

    Dim allInputs As IHTMLElementCollection = allElements.tags("a") 
    Dim element As IHTMLElement 
    For Each element In allInputs 
     element.title = element.innerText 
    Next 

    Return htmlDocument.body.innerHTML 
End Function 

Как выяснил here:

+0

не использует ли это те же библиотеки, которые IE использует для загрузки DOM? Я пробовал это раньше, но он всегда чувствует себя настолько грязным ... – tooleb

4

Не используйте ловкостью пакет, просто использовать Mshtml библиотеку для доступ к dom, это то, что используется и отлично подходит для прохождения через HTML-элементы.

Пакет ловкости неприятен и излишне хаки, если вы спросите меня, mshtml - это путь. Посмотрите на msdn.

Смежные вопросы