Как вы анализируете HTML-код в vb.net
-
21-08-2019 - |
Вопрос
Я хотел бы знать, есть ли простой способ разобрать HTML в vb.net.Я знаю, что HTML не является ограниченным подмножеством XML, но было бы неплохо, если бы к нему можно было относиться таким образом.Есть ли что-нибудь, что позволило бы мне разобрать HTML подобным XML способом в VB.net?
Решение
Мне нравится Html-пакет гибкости - это очень удобно для разработчиков, бесплатно, и исходный код доступен.
Другие советы
'добавьте также prog ref: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
Как найдено здесь:
Если ваш HTML соответствует стандартам XHTML, вы можете выполнить большую часть синтаксического анализа и обработки, используя System.Классы пространства имен XML.
С другой стороны, если вы анализируете то, что веб-разработчики называют "супом тегов", вам понадобится сторонний анализатор, такой как HTML-пакет Гибкости.
Это может быть лишь частичным решением вашей проблемы, если вы пытаетесь выяснить, как браузер будет интерпретировать ваш HTML-код, поскольку каждый браузер анализирует tag soup немного по-разному.
Не используйте agility pack, просто используйте библиотеку mshtml для доступа к dom, это то, что использует ie и отлично подходит для просмотра HTML-элементов.
Пакет аджилити - это отвратительно и излишне халтурно, если вы спросите меня, то mshtml - это правильный путь.Посмотрите это в msdn.
Хорошо ли она сформирована?Если HTML на самом деле хорошо сформирован, то его можно разобрать как XML.Если это tag soup и в нем есть незакрытые элементы и тому подобное, я бы подумал, что вам придется поискать стороннее решение.