2016-08-04 7 views
0

私はphantomJSを使用して単純なコードを試していますが、運はありません。特定のWebページをPhantomJSで削り取ることができません

var page = new WebPage(); 
var system = require('system'); 
var site=system.args[1]; 
var page = require('webpage').create(); 

page.onError = function (msg, trace) 
{ 
    console.log(msg); 
    trace.forEach(function(item) { 
    console.log(' ', item.file, ':', item.line); 
}) 
} 
page.open("https://www.mightydeals.co.uk/Products/all/National/Grey-  
Small/132212", function(){ 

var p=page.evaluate(function(){ 
return [].map.call(document.querySelectorAll('#productInformation'),  

function(link) { 
     return link.innerText; 
    }); 
    }); 
    console.log(p); 
}); 
phantom.exit(); 
}); 

ページには、関数の中で上記であり、また、ここで私が代表しています: Link to page

を私はエラーとヌル出力を取得しています。

私は製品の説明を得る必要がありますが、説明はしていませんがエラーがあります。

私はページが

キャッチされないでSyntaxError言うコンソールで自身をエラーがある見ることができます:予期しないトークン<

が問題か何かの原因となるページエラーですが、/アドバイスを提案してください。

+0

jslintのようなツールでスクリプトをチェックしてください。構文エラーがあるようです。 – Vaviloff

答えて

1

デフォルトのPhantomJS要求(ヘッダー設定なし)は、一部のページではモバイルデバイスと解釈されます。この場合、page.openに電話すると、要求されたURLは、#productInformation要素を持たないhttp://m.mightydeals.co.uk/index.html#dealList/productId=132212&menu1Id=1&menu2Id=0&にリダイレクトされます。

この現象は、page.openコールバック内で、page.evaluateの前に、page.render('page.png')(スクリーンショットを撮る予定)で確認できます。

これは、page.openの前にカスタムヘッダーを設定することです。

page.customHeaders = { 
    'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:42.0) Gecko/20100101 Firefox/42.0', 
    'Accept': '*/*', 
    'Accept-Language': 'nb-NO,nb;q=0.9,no-NO;q=0.8,no;q=0.6,nn-NO;q=0.5,nn;q=0.4,en-US;q=0.3,en;q=0.1', 
    'Connection': 'keep-alive' 
}; 

またはモバイル版のページで廃棄する要素を取得します。

+0

答えをいただきありがとうございます。 –

関連する問題