1

phantom.js を使用して Web スパイダーを作成しようとしています。ただし、理由がわからないエラーメッセージがたくさん表示されました。私のコードを以下に示します。

  • Nightmare.js を使用します

    var Nightmare = require('nightmare');
    new Nightmare()
            .goto('http://www.amazon.com/Aroma-Housewares-ASP-137-3-Quart-Super/dp/B00024JQ3Q')
            .evaluate( function(){
              return document.getElementById('priceblock_ourprice').textContent;
            }, function( numAnchors ){
              console.log(numAnchors);
            })
            .run();
    
  • Phantom.js を使用します

    var page = require('webpage').create();
    console.log('The default user agent is ' + page.settings.userAgent);
    page.open('http://www.amazon.com/Aroma-Housewares-ASP-137-3-Quart-Super/dp/B00024JQ3Q', function(status) {
      if (status !== 'success') {
        console.log('Unable to access network');
      } else {
        var ua = page.evaluate(function() {
          return document.getElementById('priceblock_ourprice').textContent;
        });
        console.log(ua);
      }
      phantom.exit();
    });
    

エラーメッセージは同じです:

phantom stdout: ReferenceError: Can't find variable: ue.......
........
........
phantom stdout: TypeError: 'null' is not an object (evaluating 'old_error_handler.apply')
.......
$35.99

最後の行で結果を取得できますが、上記のように非常に多くのエラーが表示されます。その理由は何ですか?

4

1 に答える 1

2

これはよく起こります。現在の PhantomJS (1.9.7) は、Chrome 13 または Safari 5 に相当する古い QtWebkit フォークに基づいています。問題のページは、PhantomJS が理解できない JavaScript で何かを使用している可能性が非常に高いです。ほとんどの場合、サイトは意図したとおりに機能するため、心配する必要はありません。

于 2014-10-18T07:40:55.083 に答える