в основном, я пытаюсь очистить веб-страницы с помощью php, но я хочу сделать это после того, как начальный javascript на странице выполняется - мне нужен доступ к DOM после первоначальных запросов ajax и т. Д. ... есть ли способ сделать это?php file_get_contents - ПОСЛЕ javascript выполняет
ответ
Короткий ответ: нет.
Скремблирование сайта дает вам все, что сервер отвечает на HTTP-запрос, который вы создаете (из которого выводится «начальное» состояние дерева DOM, если это содержимое является HTML). Он не может принимать во внимание «текущее» состояние DOM после того, как он был изменен Javascript.
Чтобы расширить это, JavaScript является языком на стороне клиента. Он выполняется после того, как страница была получена браузером. PHP не является браузером. На самом деле PHP тоже не заботится о DOM. Он получает данные, которые могут быть или не быть в форме XML, и вы можете делать с ним то, что хотите. – teh1
любые хаки вокруг этого? загружать страницу в iframe и затем каким-то образом захватить код? и простые библиотеки, которые могли (попытаться) выполнить его где-то вдоль линии? Я знаю, что это, вероятно, все «нет», но я просто пытаюсь найти способ получить последние данные для страниц, загружаемых динамически (например, новостные сайты). –
@JustinKrause: вам нужно будет встроить [Javascript engine] (http://en.wikipedia.org/wiki/JavaScript_engine#JavaScript_engines) в программу по вашему выбору, которая (я верю, но не уверен) сразу исключает PHP как язык программирования.В любом случае это будет на порядок больше, чем 'file_get_contents'. Кроме того, вы уверены, что ваш прецедент будет законным? – Jon
Я пересматриваю этот ответ, потому что в настоящее время существует несколько проектов, которые делают действительно хорошую работу этого:
PhantomJS является обезглавленным версия WebKit, и есть некоторые полезные обертки, такие как CasperJS.
Zombie.js который является оберткой над jsdom написан на Javascript (Node.js).
Вам необходимо написать код JavaScript для взаимодействия с обоими этими проектами. Мне до сих пор нравится Zombie.js, так как его легче настроить, и вы можете использовать любые модули Node.js/npm в своем коде.
Старый ответ:
Нет, нет никакого способа, чтобы сделать это. Вам нужно будет эмулировать полную среду браузера внутри PHP. Я не знаю никого, кто делает такие скребки, кроме Google, и это далеко не полный.
Вместо этого вы должны использовать Firebug или другой инструмент веб-отладки, чтобы найти запрос (или последовательность запросов), который генерирует нужные вам данные. Затем используйте PHP для выполнения только необходимых запросов.
@JonathanM взгляните на мой комментарий выше – madfriend
- 1. javascript: document.write + php: file_get_contents
- 2. Вставить Javascript в file_get_contents() php
- 3. PHP file_get_contents с JavaScript перенаправить
- 4. PHP file_get_contents после того, как php оценил
- 5. JavaScript не загружается после выхода PHP file_get_contents() строки
- 6. PHP не выполняет после DOMPDF
- 7. PHP file_get_contents является асинхронным?
- 8. PHP file_get_contents с php нетронутыми?
- 9. PHP file_get_contents
- 10. file_get_contents() PHP
- 11. PHP - Использование `file_get_contents()` для вставки javascript
- 12. file_get_contents() Timeout в php
- 13. PHP file_get_contents function
- 14. PHP file_get_contents добавляет пробел?
- 15. PHP file_get_contents() Время ожидания?
- 16. PHP file_get_contents() из другого файла file_get_contents()
- 17. PHP multiple file_get_contents по данным предыдущих file_get_contents
- 18. Как getimagesize() после file_get_contents()?
- 19. PHP file_get_contents дает ошибку
- 20. PHP file_get_contents server check
- 21. file_get_contents возвращает ложь в PHP
- 22. file_Get_contents в javascript
- 23. Javascript выполняет действие после окончания анимации
- 24. не выполняет javascript registerstartupscript после обратной передачи
- 25. Javascript, jQuery, выполняет функцию после другой функции
- 26. Как директива после повторной функции Javascript выполняет
- 27. php: file_get_contents удаляет php-код
- 28. PHP: file_get_contents показывает PHP код
- 29. Javascript выполняет и отображает
- 30. file_get_contents() без ответа - PHP
Что вы пробовали? Ваш вопрос немного неоднозначен. Если вы можете опубликовать некоторый пробный код, мы получим более четкое изображение. –
Я не понимаю .... – Blaster
Я думаю, что OP хочет захватить содержимое веб-страницы, и если он содержит JS, он должен быть выполнен, как если бы страница была открыта в браузере. – madfriend