【问题标题】:How to get content of a website which calls a JSON file using PHP/cURL如何获取使用 PHP/cURL 调用 JSON 文件的网站内容
【发布时间】:2014-11-29 20:02:49
【问题描述】:

有一个超市网站,我需要获取产品名称和价格数据列表。 网址是:http://www.sanalmarket.com.tr/kweb/sclist/30011-tum-meyveler

但是,我无法成功获取此内容。每次尝试都以空结果结束。我不熟悉 cURL,但建议我克服这个问题。如我所见,产品列表是使用 Ajax - JSON 调用的,因此,我应该按照请求使用 PHP 查看 JSON 文件及其内容。 ...但是如何?

提前谢谢你。

我试过的代码:

<?php
$url="https://www.sanalmarket.com.tr/kweb/sclist/30011-tum-meyveler";

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL,$url);
$result=curl_exec($ch);
curl_close($ch);
var_dump(json_decode($result, true));

?>

【问题讨论】:

  • @mithunsatheesh 已添加。
  • 为什么不直接调用json请求呢?如果它是动态的,您需要将网站下载到字符串 (file_get_contents) 并提取 url 可能使用 DomDocumentRegex。试试看,如果你有一个特定的问题,你可以问。对我来说,这是在目前的状态下广泛使用的方式。
  • 我查看了页面结构和加载产品的 Ajax/JSON 请求,据我所知,我认为您无法轻松获得所需的信息.首先,您在 CURL 中使用的 URL 是针对网页本身的,而不是针对返回产品信息的 URL。其次,产品信息 URL 仅在您发送有效 cookie 时返回一个值,因此您需要一种从原始 URL 获取 cookie、存储它,然后使用它来抓取 AJAX URL 的方法。我希望这会有所帮助。
  • @hargobind 多亏了你,我至少有了一个路线图。从 URL 获取 cookie 列表对我有帮助,不是吗?

标签: php ajax json curl


【解决方案1】:

您的 curl 请求确实有效,并且您在 $result 变量中获得了 html 响应。问题是您将 html 响应字符串视为有效的 JSON 字符串。

而不是

var_dump(json_decode($result, true));

试试

var_dump($result);

这里的$result 不是有效的 JSON 字符串。它是一个包含服务器响应的 html 的字符串。所以不使用html解析器就不能直接解析成数组或者对象。

【讨论】:

  • 不是我的投票。我没有足够的代表投票给某人。你说得对。现在我可以看到一些东西,但它仍然不是我想要的东西。我的错。
  • @DorukhanArslan :响应是 html,您将其传递给 json 解码。所以 json decode 需要有效的 json 字符串,而你必须提供一个。
  • 其实我不知道如何从源代码中找到特定的JSON字符串并传递它。
猜你喜欢
  • 2016-05-28
  • 2018-09-09
  • 2015-02-12
  • 2011-04-05
  • 1970-01-01
  • 2016-06-24
  • 1970-01-01
  • 1970-01-01
  • 2011-08-16
相关资源
最近更新 更多