2013-10-25 16 views
7

では動作しません。のXPathルックアップは、私はXPathはPhantomJS 1.9.2で作業を取得しようとしているPhantomJS

var divs = page.evaluate(function(s) { 
    return document.querySelector(s); 
}, 'div'); 

この特定のXPath評価サンプルで何か迷ったのですか?

+0

文書にはどのMIMEタイプがありますか?名前空間を使用していますか? ' ...'? –

+0

私は、他の多くのサイトやgoogle.comで試してみました。同じ結果。 –

+0

MIMEタイプはWebKitのXPath実装にまったく影響しますか? PhantomJSのサイトでは、DOM処理、CSSセレクタ、JSON、Canvas、SVGのネイティブサポートがあると述べています。 XPathの組み込み機能がないことを意味しますか? –

答えて

13

私は、コールdocument.evaluateは、以下のようなpage.evaluate呼び出しで受け入れなければならないことを最終的に判明している:あなたはphantomjsと、特定のXPathのHTMLコンテンツを取得したい場合は

page.evaluate(function() { 
    document.evaluate(
     '//div', 
     document, 
     null, 
     XPathResult.ORDERED_NODE_ITERATOR_TYPE, 
     null); 
}); 
+0

あなた自身の答えを受け入れるべきです。 –

0

.. :-)

var xpath= '//*[@id="2b"]'; 
var address= 'www.mywebadress.com'; 
page.open(address, function(status) { 
     setTimeout(grabHtml, 2500); 
    }); 

function grabHtml() { 

var html = page.evaluate(function(xpath) { 

    if (document.evaluate) { 
     var xPathRes = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null) 
     if (xPathRes.singleNodeValue) { 
      var c = html.singleNodeValue.innerHTML; 
     } else if (xPathRes) { 
      var c = "No content found!"; 
     } 
    } else { 
     var c = "does not support the evaluate method!"; 
    } 
    return c; 
}, xpath); 

console.log(html); 
関連する問題