Я загружаю страницы cURL в PHP. Все работает нормально, но я извлекаю некоторые части страницы, которые вычисляются с помощью JavaScript, после загрузки страницы. cURL уже отправляет исходный код страницы на мой PHP-скрипт до того, как будут выполнены вычисления JavaScript, что приведет к неправильным конечным результатам. Расчеты на сайте получены AJAX, поэтому я не могу воспроизвести этот расчет простым способом. Также у меня нет доступа к коду целевой страницы, поэтому я не могу настроить эту целевую страницу в соответствии с моими потребностями (cURL).
Есть ли способ, которым я могу сказать cURL, дождаться окончания всего динамического трафика? Это может быть сложно, из-за некоторых JavaScripts, которые продолжают отправлять данные обратно в другой домен, что может привести к длительным зависаниям. Но, по крайней мере, я смогу проверить, если я хотя бы верну свои результаты.
Моя панель инструментов разработчика в Safari указывает, что страница сделана примерно в 1,57 раза. Может быть, я могу сказать cURL статически подождать еще 2 секунды?
Интересно, каковы возможности 🙂
cURL не выполняет JavaScript или не загружает файлы, указанные в документе. Таким образом, cURL не является решением проблемы.
Вам нужно будет использовать браузер на стороне сервера, скажите ему, чтобы загрузить страницу, дождаться X секунд, а затем попросить дать вам HTML.
Посмотрите: http://phantomjs.org/ (вам нужно использовать node.js, я не знаю никаких PHP-решений).
Не зная много о странице, которую вы извлекаете, или вычислениях, которые вы хотите включить, но это может быть вариант cURL прямо на URL-адрес, обслуживающий эти запросы ajax. Используйте что-то вроде Firebug для проверки вызовов Ajax, сделанных на целевой странице, и вы можете выяснить URL и любые переданные параметры. Если вам нужна полная веб-страница, возможно, вы можете использовать как веб-страницу, так и URL-адрес Ajax и объединить их в свой PHP-код, но затем он начинает запутываться.