<?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网站上显示的所有结果。 提前谢谢。
答案 0 :(得分:0)
所有商品都是'&lt; div id =“tab_block”&gt;'的一部分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也将返回第一项的图像,但使用一些参数
无论如何,我只是抓住整个问题的表面来演示如何继续。您需要了解网站逻辑以阅读完整的数据集,但更容易联系网站管理员并要求他描述其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-&gt; code == 200,则$ response-&gt;正文是包含文档数组的JSON对象。