file_get_contents()遗漏了一些重要的数据

时间:2012-05-16 17:41:32

标签: php web-crawler

我试图从this page读取html,然后解析它。问题是当我使用file_get_contents($url)时,它会遗漏一些内容(我实际需要的内容)。例如,它不会在"每1盎司金额"之后得到数据。 (只是一个空白),以及" NUTRITION INFORMATION"中的所有数据(仅限数字,它确实得到标签);表。

这是脚本:

<?php
$url = "http://nutritiondata.self.com/facts/fruits-and-fruit-juices/1848/2";
$content = file_get_contents($url);
var_dump($content);
?>

2 个答案:

答案 0 :(得分:2)

您请求的网址实际上并不包含您要查找的数据。您在浏览器中看到的数据将通过javascript放入页面。

以下是没有javascript的页面:

page with javascript disabled

你需要找到javascript正在使用的数据源(完全可能是其他一些URL)并阅读它。

在这种情况下,数据 实际上在您正在请求的页面中(而不是您正在寻找它的位置),在3400行附近的一个大型JSON对象中。 foodNutrients = {

答案 1 :(得分:0)

看起来,该页面确实部分来自javascript。如果您访问该页面并让您显示HTML代码(不是通过DOM检查器或其他内容,而是页面的实际来源),您可以看到,您要搜索的部分不可用。

页面中包含了大量的javascript,你可能需要找出,哪些javascript填充页面以及从哪里得到它的数据。

“file_get_contents”对此没有帮助,因为javascript部分永远不会被执行。