msxml/IXMLDOMDocument を使用したオンライン HTML ページの解析に関する適切なチュートリアルはありますか?
XPATH 式を使用して HTML ページを解析する必要があります。
ほとんどの場合、一部の HTML ページは 100% 有効ではありません。そのため、パーサーをより「フレンドリー」に構成するか、そのようなページに対してそれほど厳密でないように構成する必要があります。
何か案は?
msxml/IXMLDOMDocument を使用したオンライン HTML ページの解析に関する適切なチュートリアルはありますか?
XPATH 式を使用して HTML ページを解析する必要があります。
ほとんどの場合、一部の HTML ページは 100% 有効ではありません。そのため、パーサーをより「フレンドリー」に構成するか、そのようなページに対してそれほど厳密でないように構成する必要があります。
何か案は?
tidy または tidy ラッパー ライブラリを使用して、無効な html を整理できます。これを行った後、MSXML を使用して xhtml 名前空間を指定して html を解析できます。
EfTidyは、html を整理するための最新のオープン ソース tidy ラッパー プロジェクトです。
この質問のタイトルを取得するために、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
それが役に立てば幸い。