无法从 PHP 脚本中获取完整的源代码


Not able to fetch the complete source code from the PHP script

<?php 
$url = "http://www.justdial.com/Delhi-NCR/Pizza-Outlets-%3Cnear%3E-Okhla/";
$ptr = fopen("op.txt","w");
$data = file_get_contents($url);
print_r($data);
$result = htmlentities($data);
$doc = new DOMDocument(); 
@$doc->loadHTML($result);
$finder = new DOMXPath($doc);
$node = $finder->query("//h3[contains(@class, 'r')]");
?>

以上是我为获取justdial的源代码而编写的代码。我得到的唯一输出是第一家披萨店。我怎样才能获取justdial网站上显示的所有结果。提前谢谢。

所有项目都是'

'html元素的一部分,其内容由javascript/AJAX调用构建,因此它们不会出现在通过file_get_contents((加载的HTML文件中,因为只有在没有解释javascript代码的情况下,您只会获得HTML定义。

但是,这意味着如果您知道端点,则可以直接通过代码访问项/数据库。

例如(url 显示为我测试它们时的样子(

此 url 将返回完整列表的前几项。它将返回类似(JSON格式(的内容:

[{docid: "011PXX11.XX11.151106170721.W5H9",…}, {docid: "011PXX11.XX11.140302105210.Y9N8",…},…]
  0: {docid: "011PXX11.XX11.151106170721.W5H9",…}
      disp_pic: "http://images.jdmagicbox.com/delhi/h9/011pxx11.xx11.151106170721.w5h9/catalogue/6cf575ffbd1090f5a314d2cf40451c88.jpg"
      docid: "011PXX11.XX11.151106170721.W5H9"
  1: {docid: "011PXX11.XX11.140302105210.Y9N8",…}
      disp_pic: "http://images.jdmagicbox.com/delhi/n8/011pxx11.xx11.140302105210.y9n8/catalogue/ecfd2106644df17013e98bb60f40c527.jpg"
      docid: "011PXX11.XX11.140302105210.Y9N8"
      video: "http://videos.jdmagicbox.com/delhi/n8/011pxx11.xx11.140302105210.y9n8/video/fc2a62242ae03c74c15436dbcc04c33a_m.jpg"
  ...     

docid 可用于对特定项目进行进一步查询,而 disp_pic URL 将返回图像

此 url 也将返回第 1 项的图像,但使用一些参数

无论如何,我只是触及整个问题的表面,以演示如何进行。您需要了解站点逻辑才能读取完整的数据集,但联系网站管理员并要求他描述其 API/端点以便您访问数据会更容易。以及要求他允许使用它,即使"API"不受保护。

一旦你知道端点、结构和数据描述,你就可以使用像 mashape''unirest 这样的 PHP 库来执行这样的查询:

Unirest'Request::verifyPeer (false) ;
$response =Unirest'Request::get (
    'http://www.justdial.com/functions/sortbyphotosnew.php?contractid=011PXX11.XX11.151106170721.W...,
    array ( 'Accept' => 'application/json' ),
    null
) ;

如果 $response->code == 200,则 $response-> 是包含文档数组的 JSON 对象。