我正在尝试从“https://uk.finance.yahoo.com/q/cp?s=%5EFTSE”
获取数据我在YQL控制台中使用了select * from html where url = 'https://uk.finance.yahoo.com/q/cp?s=%5EFTSE'
:YQL console
这似乎正在取得适当的结果。
然后我通过PHP执行完全相同的查询,这就是我回来http://pastebin.com/MDTwh6n7它缺少我使用的['query']['results']['body']['div'][3]
。
我可能在这里做错了,但看起来这个查询有效,有时即使我保持不变也是如此。
答案 0 :(得分:0)
这通常发生在网站动态加载时。如果您使用Chrome开发者工具并检查网络选项卡,您将看到网页会随着时间的推移执行多个请求,直到您看到完整的结果。
这是YQL的问题。您的查询可能适用于控制台,因为当您使用它时,页面已经完成加载。
然而,当您的PHP服务器执行请求时,它仍然需要等待其余的,并且它不会。因此,您的YQL查询最终会使用不完整的HTML运行。
YQL很好,但仅适用于纯静态HTML页面,我认为这不是这里的情况。
嗯,没有办法确定,但Quora的这篇文章提出了一些你可以使用的策略:
我自己最近也犯了同样的错误。我认为wikia页面是理所当然的,认为它是静态的,但最后它也是动态加载的。
总的来说,我相信如果你想进行HTML抓取,你需要使用其他工具。
我相信如果你能确保使用服务器获得完整的HTML下载,那么解析它应该很容易。
所以我建议采取两个步骤:
不可否认,有许多图书馆和许多方法可以实现这两个目标,但我认为这足以让你开始。