Заставьте file_get_contents () дождаться полной загрузки сайта

Я пытаюсь включить этот сайт в мою переменную php:

https://www.warcraftlogs.com/rankings/server/393/latest/#class=Druid&Spec = Ферал

Вы можете видеть, что веб-сайт начинает загружать реальное содержимое веб-сайта только после первой загрузки страницы.

file_get_contents("https://www.warcraftlogs.com/rankings/server/393/latest/#class=Druid&spec=Feral");

возвращает только пустой пустой веб-сайт без фактического содержимого таблиц, загруженных на втором шаге.

Есть ли способ заставить file_get_contents ждать загрузки сайта?

0

Решение

Чтобы понять, что происходит на сайте, попробуйте открыть инспектор сети вашего браузера. Вы увидите загрузку самой страницы, а затем загрузку различных других ресурсов, таких как CSS-файлы, JS-файлы, изображения и некоторые другие страницы.

Одна из тех других страниц это: https://www.warcraftlogs.com/rankings/table/dps/6/0/5/20/1/Druid/Feral/0/393/?search=&страница = 1.

Похоже, что основной сайт выдает запрос AJAX для получения дополнительных данных с этого URL. Обратите внимание, что file_get_contents () не может получить все сразу, так как file_get_contents () не будет анализировать веб-сайт или оценивать JS (а именно JS вызывает запрос AJAX). Решение простое — вместо использования file_get_contents () для захвата основного сайта, используйте его для захвата второй страницы с данными.

Если вы пытаетесь получить этот URL, вам придется копать глубже. Если вы откроете главную страницу, вы найдете фрагмент JS, встроенный на страницу, который выглядит следующим образом:

function loadTable()
{
var loadString = '/rankings/table/' + filterMetric + '/' + zoneID + '/' + filterBoss + '/' + filterDifficulty + '/' + filterSize + '/' + filterRegion + '/' + filterClass + '/' + filterSpec + '/' + filterBracket + '/' + filterServer + '/' + '?' + "search=" + filterSearch + "&page=" + filterPage
$("#table-container").load(loadString, tableLoaded)
}

Обратите внимание, как динамически создается строка с нужными параметрами. Затем он вызывает $ .fn.load (), который запускает запрос AJAX на URL.

2

Другие решения

Данные, которые вы хотите увидеть, находятся по другому адресу:

https://www.warcraftlogs.com/rankings/table/dps/6/0/5/20/1/Druid/Feral/0/393/?search=&страница = 1

1

этот сайт использует AJAX, вы можете найти загрузку AJAX и получить его.
реальный запас акций:

file_get_contents("https://www.warcraftlogs.com/rankings/table/dps/6/0/5/20/1/Druid/Feral/0/393/?search=&page=1");
0

Вы можете загрузить данные из этого URL:

https://www.warcraftlogs.com/rankings/table/dps/6/0/5/20/1/Druid/Feral/0/393/?search=&страница = 1

0
По вопросам рекламы [email protected]