Я пытаюсь получить данные от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]
который я использую.
Возможно, я делаю здесь что-то не так, но кажется, что этот запрос работает, а иногда нет, хотя я все равно сохраняю его.
Обычно это происходит, когда сайт загружается динамически. Если вы используете Chrome Dev Tools и откроете вкладку Сеть, вы увидите, что веб-страница выполняет несколько запросов с течением времени, пока не увидите полный результат.
Это проблема для YQL. Ваш запрос, скорее всего, работает с консолью, потому что, когда вы его используете, страница уже загружена.
Однако, когда ваш PHP-сервер выполняет запрос, ему все еще нужно ждать остальных, а это не так. Следовательно, ваш YQL-запрос в конечном итоге выполняется с неполным HTML.
YQL хорош, но только для чисто статических HTML-страниц, что, на мой взгляд, здесь не так.
Ну, нет способа узнать наверняка, но в этой статье Quora предлагаются некоторые стратегии, которые вы можете использовать:
Я сам недавно сделал ту же ошибку, что и вы. Я воспринимал страницу вики как должное, думая, что она статическая, но в итоге она также загружалась динамически.
В целом, я считаю, что если вы хотите использовать очистку HTML, вам нужно использовать другой инструмент.
Я считаю, что если вы можете убедиться, что вы получаете полную загрузку HTML с вашего сервера, то это должно быть легко.
Поэтому я предлагаю два шага:
По общему признанию, есть много библиотек и способов, которыми вы можете достичь этих двух целей, но я думаю, что этого более чем достаточно, чтобы вы начали.
Других решений пока нет …