3

私は正常に動作する次のvb.netコードを持っており、メッセージボックスにid属性を持つ要素の正確な数が表示されます。

Dim hreftext = htmldoc.DocumentNode.SelectNodes("//*[@id]")
 MsgBox(hreftext.Count)

ここで問題となるのは、メッセージボックスで次を使用すると、id rsoの要素が6つあるにもかかわらず、オブジェクト参照がオブジェクトのインスタンスに設定されていないことです。

Dim hreftext = htmldoc.DocumentNode.SelectNodes("//*[@id='rso']")
 MsgBox(hreftext.Count)

2番目のスニペットに何か問題がありますか?

4

2 に答える 2

2

あなたのSOの質問の別の1つを読んだので、あなたはグーグルショッピングをこすり取ろうとしていて、生成されたdomではなく、ダウンロードされたhtmlソースをチェックすることを怠ったようです。

ID「rso」はhtmlソースに表示されないため、エラーが発生します。グーグルはこすり取られることに熱心ではなく、確かにそれを難し​​くしている。

私が何を意味するかを確認するには、フォームに複数行のテキストボックスを追加して、現在のxpathコードの代わりにこれを追加します。

TextBox1.Text = htmldoc.DocumentNode.OuterHtml

かなり違います!!

于 2012-11-05T12:45:53.850 に答える
1

ケースのチェックについて詳しく説明するには:

試す:

Dim hreftext = htmldoc.DocumentNode.SelectNodes("//*[translate(@id,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')='rso']")
 MsgBox(hreftext.Count)

'rso'の任意のケースの組み合わせに等しいノードを取得するには

于 2012-11-05T01:59:23.893 に答える