2016-09-30 5 views
0

PhantomJSを使用してWebページから値を選択するにはどうすればよいですか?ここにhtmlのコードがあります:PhantomJS - ページから値を選択

443のパスから値を選択したいと思います。ここにコードがありますが、nullを返します。

var page = require('webpage').create(); 
var url = 'http://localhost:9001/'; 

page.open(url, function (status) { 
    if (status === 'success') { 
    var input = page.evaluate(function() { 
     return document.querySelectorAll("li.passes").value; 
    }, 2000); 
    console.log(input); 
    phantom.exit(); 
    } 
}); 

答えて

1

document.querySelectorAll("li.passes")そのセレクタに一致する単一li要素とコレクションを返します。コードを document.querySelectorAll("li.passes > em")[0].textContentに変更する必要があります。これはliemと一致し、そのテキストコンテンツを返します。

1

liタグに値がありません。innerTextまたはinnerHTMLがあります。この場合、innerHTMLにはアンカータグと強調タグという2つの子があります。あなたが強調されますフェッチされているもののすべてのインスタンスは、あなたの代わりに、EMフィールドの各返された値に照会し、あなたの最終的な値を取得することのinnerHTMLプロパティを得ることができることを確信している場合

console.log(input) 

あなたが

if (input.length === 0) { 
    console.log('No passes found.'); 
} else { 
    for (var ndx = 0; ndx < input.length; ndx++) { 
    console.log(input[ndx].querySelector('em').innerText); 
} 

を持つことになり、私は私ができるようにあなたの元のコードに近い答えを保ったが、私は、入力が[NDX]なしEMタグを持っていない、すなわち場合は、いくつかのエラーチェックを入れてお勧めします。 emフィールドを持たないクラスを無視する必要がある場合は、元のquerySelectorAll( '。classes> em')にem子孫を含めることができます

もちろん、htmlを自分で作成している場合は、 emフィールド(またはその値がどこにあるか)に関係なく、多くの面倒をなくすことができます。

関連する問題