我正在使用Nodejs中的PhantomJS來刮取使用React組件的網站。用Phantomjs刮掉React站點
有了這個:https://github.com/amir20/phantomjs-node
下面是代碼:
phantom.create().then(ph => {
_ph = ph;
return _ph.createPage();
}).then(page => {
_page = page;
return _page.open(url);
}).then(status => {
return _page.property('content');
}).then(content => {
console.log(content);
_page.close();
_ph.exit();
}).catch(e => console.log(e));
問題是反應內容不呈現,它只是說:<!-- react-empty: 1 -->"
在實際反應成分應該被加載。
如何取消呈現的反應組件?我最初從純粹的節點請求解決方案切換到PhantomJS來解決這個問題,但現在我陷入困境。
UPDATE:
所以我沒有真正的解決辦法呢。我切換到NightmareJS(https://github.com/segmentio/nightmare),它有一個不錯的.wait('.some-selector')
函數,該函數等待指定的選擇器加載。這解決了我動態加載的反應組件的問題。
此包是否支持接收page.onError回調?有沒有錯誤? – Vaviloff
是的,有'console.log(status);'並且它返回成功。我得到整個HTML內容,除了反應組件,我得到了'<! - react-empty:1 - >' – DennisKo
我懷疑'status',如果來自'page.open'回調,並且您需要檢查頁面中的錯誤.onError回調。可能是這樣的:[爲什麼我不能使用PhantomJS渲染我的ReactJS應用程序](http://stackoverflow.com/questions/38469005/why-i-am-not-able-to-render-my-reactjs -application-using-phantomjs-2-1-1) – Vaviloff