-1

msxml/IXMLDOMDocument を使用したオンライン HTML ページの解析に関する適切なチュートリアルはありますか?

XPATH 式を使用して HTML ページを解析する必要があります。

ほとんどの場合、一部の HTML ページは 100% 有効ではありません。そのため、パーサーをより「フレンドリー」に構成するか、そのようなページに対してそれほど厳密でないように構成する必要があります。

何か案は?

4

1 に答える 1

2

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

それが役に立てば幸い。

于 2012-08-20T08:03:09.063 に答える