mipfikus
@mipfikus
Вообще я не знаю, но

Как, используя PHP, скачать страницу с динамической подгрузкой?

Мне нужно скачать страницу каталога, которую сделали с помощью тильды, а там контент генерируется динамически. file_get_contents в этом случае не помогает. Как в таком случае можно скачать страницу используя PHP?
  • Вопрос задан
  • 196 просмотров
Решения вопроса 1
@rPman
У тебя 2 основных способа:
1. разобраться в том как работает этот сайт, какие http запросы отправляет, как их собирает (можно отследить в инспекторе в браузере по F12 закладка network, можно сохранить запросы в json . har файл и анализировать позже, в худшем случае придется анализировать js код) и написать свое приложение, которое будет отправлять те же самые запросы, библиотек полно, например curl, есть одноименная утилита так и поддержка в языках программирования, в т.ч. на php, кстати в инспекторе браузера, нажав правую кнопку мыши на запросе можно скопировать curl команду для его повтора.

этот подход очень сложен, реверс инженеринг чужого приложения, особенно если там используется javascript (если нет то обычно проще), но наиболее эффективен по затратам ресурсов, и одна слабая машина может симулировать работу одновременно нескольких пользователей (десятки и даже сотни), этот подход используют когда нужно собрать данные с веб сайта, который не защищается от подобной автоматизации

2. используя полноценный браузер, например инжектить свой javascript на его страницу с помощью расширения или вставив код прямо в консоль, или используя удаленное управление из своей программы, например selenium

этот подход заметно проще, например javscript который будет нажимать на кнопку Подписаться на странице хабр qna:
$('.btn_subscribe').click()
Помимо всего, этот способ позволяет обойти большинство защит от автоматизации, так как это буквально кликать мышкой по кнопкам но главный недостаток - на каждого пользователя будет требоваться полноценный браузер (иногда можно сэкономить), что очень затратно по ресурсам
Еще одна проблема этого способа - нет универсального способа определить момент, когда окончилась загрузка страницы, в каждом случае придется выявлять самостоятельно критерии (например появление определенного html элемента), большинство просто выставляют таймаут по больше, но если будут проблемы с интернетом или на стороне веб сервиса, этот подход даст сбой.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Volonteer
А wget вам не подойдет?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы