1

XpathBuilderを使用すると、単純な検索エンジン クエリを作成し、XPath を使用して検索結果からデータを引き出すことができます。さまざまな検索エンジンでクエリ「XPath チュートリアル」を実行し、各検索エンジンが返す結果の数を抽出しようとする Google Doc スプレッドシートの簡単な例をいくつか示します。

その Google Doc のコードは次のとおりです。

=importxml("http://www.google.com/search?q="xpath+tutorial"&num=30&pws=0", 
           "//div[@id='resultStats']")
=importxml("http://www.bing.com/search?q=xpath+tutorial&count=30", 
           "//span[@class='sb_count']")
=importxml("http://search.yahoo.com/search?p=xpath+tutorial&n=30", 
           "//span[@id='resultCount']")

これについては、私には理解できない奇妙な点がいくつかあります。まず、Google 検索では結果が返されませんが、XPath クエリは問題ないようです。実際、私がここで行ったことを正確に推奨する多くのオンライン チュートリアルがあります。

Yahoo クエリは正しい結果を返します。これだけが正しい結果を返します。

XPath クエリに一致する XML ノードが 1 つしかないにもかかわらず、Bing Xpath クエリによって検出された結果の数が、Bing Web ページに表示される結果と一致しません。詳細はこちらのスプレッドシートに記載されています

それはどこでそんなにうまくいかなかったのですか?

4

3 に答える 3

1

URLにエンコードされていない二重引用符が含まれているため、GoogleOneはおそらく機能しません。文字列の区切り文字は二重引用符であるためimportxml、おそらく機能しません。二重引用符をにエンコードします%22

Bingについてはよくわかりません。XPathは機能しているが、Bingは何らかの理由でユーザーとGoogleドキュメントに異なる結果を返していると推測されます。

于 2012-07-13T23:34:27.733 に答える
0

悪魔は細部に宿ります。あなたのコードを見せてくれなければ、私たちはあなたのバグを見つけることができません。

ただし、XPath は XML に対して実行するように定義されていますが、HTML に対して実行しているように見えます。したがって、混乱は、HTML が XML にマップされる方法にある可能性があります。たとえば、tbody などの暗黙的なノードの追加、大文字と小文字の折り畳み、名前空間の処理などです。

于 2012-07-13T10:05:33.203 に答える