Yahoo finance и YQL возвращают разные значения в консоли и в коде

Я пытаюсь получить данные отhttps://uk.finance.yahoo.com/q/cp?s=%5EFTSE

я использовал select * from html where url = 'https://uk.finance.yahoo.com/q/cp?s=%5EFTSE' в консоли YQL здесь: Консоль YQL
что, кажется, дает правильные результаты.

Но тогда я делаю точно такой же запрос через PHP, и это все, что я получаю http://pastebin.com/MDTwh6n7 это отсутствует ['query']['results']['body']['div'][3] который я использую.

Возможно, я делаю здесь что-то не так, но кажется, что этот запрос работает, а иногда нет, хотя я все равно сохраняю его.

0

Решение

Что происходит?

Обычно это происходит, когда сайт загружается динамически. Если вы используете Chrome Dev Tools и откроете вкладку Сеть, вы увидите, что веб-страница выполняет несколько запросов с течением времени, пока не увидите полный результат.

Почему я получаю странный результат?

Это проблема для YQL. Ваш запрос, скорее всего, работает с консолью, потому что, когда вы его используете, страница уже загружена.

Однако, когда ваш PHP-сервер выполняет запрос, ему все еще нужно ждать остальных, а это не так. Следовательно, ваш YQL-запрос в конечном итоге выполняется с неполным HTML.

YQL хорош, но только для чисто статических HTML-страниц, что, на мой взгляд, здесь не так.

Как узнать, является ли веб-страница статической или динамической?

Ну, нет способа узнать наверняка, но в этой статье Quora предлагаются некоторые стратегии, которые вы можете использовать:

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

Что мне теперь делать?

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

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

Поэтому я предлагаю два шага:

  1. сделать запрос HTTP GET Как отправить запрос GET из PHP?
  2. разобрать HTML http://htmlparsing.com/php.html

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

0

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

Других решений пока нет …

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