Как разобрать контент, загруженный javascript после завершения dom - PullRequest
2 голосов
/ 26 апреля 2011

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

  1. Возможно ли получить данные со страницы, для которой требуется JavaScript, для отображения данных с помощью php?
  2. Как вы анализируете данные с сайта, который был загружен после того, как dom был готов или завершен, используя php?

Ответы [ 3 ]

0 голосов
/ 26 апреля 2011

Вы можете попробовать функцию jquery $ (document) .onready, которая помогает запускать код java-скрипта при загрузке веб-страницы.

ex

<div id="wowoData">#4325325</div>

<script>
$(document).ready(
function(){
$("#wowoData").css("border","1px solid red");
}

)
</script>
0 голосов
/ 26 апреля 2011

Используя Firebug, я смог посмотреть HTTP-заголовки, чтобы увидеть, какие AJAX-вызовы делаются для генерации контента на следующих страницах: http://us.battle.net/wow/en/character/black-dragonflight/glitchshot/achievement#96:14861 и http://us.battle.net/wow/en/character/black-dragonflight/glitchshot/achievement#96

Похоже, что страница выполняет асинхронный вызов для загрузки этой страницы: http://us.battle.net/wow/en/character/black-dragonflight/glitchshot/achievement/14861, когда часть после хеша равна 96: 14861, и вызов http://us.battle.net/wow/en/character/black-dragonflight/glitchshot/achievement/96, когда часть после хеша просто 96. Обе эти страницы возвращают XML, который можно проанализировать для визуализации HTML.

Так что, вообще говоря, если после хеша есть только одно число, просто введите http://.../achievement/<number here> в качестве URL. Если есть два числа, вместо этого поместите второе число в конце URL.

Что вам нужно сделать, вместо того, чтобы извлекать Javascript и интерпретировать его, это самостоятельно отправлять HTTP-запросы на эти URL-адреса в PHP (например, с помощью cURL) и анализировать данные самостоятельно.

Я бы действительно рекомендовал изучать JavaScript и jQuery, поскольку вам будет очень сложно действительно создать хороший сайт, который будет извлекать информацию из Оружейной WoW, не понимая всех нагрузок AJAX, которые происходят в фоновом режиме.

0 голосов
/ 26 апреля 2011

Я бы порекомендовал посмотреть, сможете ли вы повторить запрос, отправленный JavaScript в PHP.Хотя я не верю, что есть способ обработки JavaScript в PHP, определенно нет простого или масштабируемого способа.

Я бы попытался отсканировать исходный код первой страницы, который вы скачали с помощью PHP, на наличие строктот формат, который вы упоминаете.Затем, если JS на своем сайте запрашивает что-то вроде http://www.wow.com/armory.php?id=#72:1284, вы можете просто скачать следующий источник.Вы можете узнать, как JS запрашивает сервер с помощью FireBug или Inspector в Chrome или Safari.

Итак, подведем итог:

  1. Установите флажок, чтобы найти формат URL-адреса JS, иесли вы можете скопировать его.
  2. Создайте PHP для получения главной страницы и извлеките все строки.
  3. Создайте PHP для циклического прохождения этих строк и получения этих страниц (с URL-адресом, который запрашивает JS).
  4. Делайте с этой информацией все, что вы хотели.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...