关于使用 msxml/IXMLDOMDocument 解析在线 HTML 页面的任何好的教程?
我需要使用 XPATH 表达式解析 HTML 页面。
很可能某些 HTML 页面不会 100% 有效,因此我需要将解析器配置为更“友好”或对此类页面不那么严格。
有任何想法吗?
关于使用 msxml/IXMLDOMDocument 解析在线 HTML 页面的任何好的教程?
我需要使用 XPATH 表达式解析 HTML 页面。
很可能某些 HTML 页面不会 100% 有效,因此我需要将解析器配置为更“友好”或对此类页面不那么严格。
有任何想法吗?
您可以使用 tidy 或 tidy 包装库来整理无效的 html。完成此操作后,您可以使用 MSXML 指定 xhtml 命名空间来解析 html。
EfTidy是一个很好的、最新的开源 tidy 包装器项目,用于整理 html。
我想展示一个用 VBScript 编写的示例,以使用 XPath 进行寻址以获取此问题的标题。
'EfTidy constants
Const XhtmlOut = 1
Const DoctypeLoose = 3 'for transitional
Dim EfTidy, sInvalidHTML, sValidHTML
With CreateObject("MSXML2.XMLHTTP.6.0")
.open "GET", "http://stackoverflow.com/q/12027205/"
.send
sInvalidHTML = .responseText
End With
Set EfTidy = CreateObject("EfTidy.tidyCom")
With EfTidy.Option 'config
.Clean = True
.OutputType = XhtmlOut
.DoctypeMode = DoctypeLoose
End With
sValidHTML = EfTidy.TidyMemToMem(sInvalidHTML)
With CreateObject("MSXML2.DomDocument.6.0")
.async = False
.validateOnParse = False
.resolveExternals = True
.setProperty "ProhibitDTD", False
If .LoadXml(sValidHTML) Then
.setProperty "SelectionLanguage", "XPath"
.setProperty "SelectionNamespaces", "xmlns:xhtml='http://www.w3.org/1999/xhtml'"
WScript.Echo .SelectSingleNode("//xhtml:div[@id='question-header']/xhtml:h1").Text
End If
End With
希望能帮助到你。