Я очищаю сайт, который использует компоненты React, используя PhantomJS в Nodejs.Скребок с сайтом Phantomjs
С этим: 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, кроме реагирующих компонентов, где я получаю '' – DennisKo
Я подозреваю 'статус', если из обратного вызова' page.open', и вам нужно проверить наличие ошибок на странице .onError callback. Может быть что-то вроде этого: [Почему я не могу сделать свое приложение ReactJS с помощью PhantomJS] (http://stackoverflow.com/questions/38469005/why-i-am-not-able-to-render-my-reactjs -application-using-phantomjs-2-1-1) – Vaviloff