获取具有使用CURL的json数据的重定向URL

时间:2014-09-26 09:46:22

标签: php curl

我有这样的网址 www.example.com/abc/xyz当它加载时会变成不同的网址,如:

www.example.com/abc/xyz#facet=c_State+s_FL+p14_2+r14_5g6tVndJ+n10_2+x10_2BLnMX+b5_0+h5_0+g3_0+f3_0+v_No Preference+t8_0+a30_0+u_0+k_0+q_0+w_false+j_Q+e_1+i_2

我只想要第二个网址..所以我可以使用该参数来使用curl发送json数据。

第二个网址正在请求json数据,因此我无法跟踪它。我希望使用第一个网址获取该数据。

这是我的代码:

$url = "http://www.lennar.com/New-Homes/Florida/Tampa";
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION , false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    )
);
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch);
curl_close($ch);
var_dump($result);

和我的输出是:

string '



    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">



    <html xmlns="http://www.w3.org/1999/xhtml" lang="en-us" xml:lang="en-us" xmlns:fb="http://ogp.me/ns/fb#" xmlns:og="http://opengraphprotocol.org/schema/">

    <head id="Head1"><meta name="keywords" content="quality, new homes, home builder" />

    <meta name="description" content="Lennar Homes: If a home builder provided everything you want and everything you need, and by doing so, was a'... (length=165671)

2 个答案:

答案 0 :(得分:1)

您希望获得的所谓“第二个网址”由JavaScript生成

请注意,您被第一个网址重定向到第二个网址。在页面加载后在第一个URL下生成的JS只是将一些数据添加到第一个URL。

curl,wget或file_get_contents 都不能满足您的需求,因为这些都不会解析/执行JavaScript代码。

如果你想模拟创建第二个URL,你可以尝试在那个页面上检查JS(我会说错误的想法,需要大量工作并且对外部逻辑变化很有用)或者尝试查看SO:{{3然后使用JS引擎获取第二个URL。

如果你想模拟URL,我会看一下加载HTML中的var facetContextJSON - 它是某种配置JSON,你可以通过cURL获得,regexp +解析它并弄清楚如何构建您实际需要的URL。

答案 1 :(得分:0)

我找到了获取json参数的方法,而这些参数是我无法通过curl获得的。这是解决方案:

$.get(
                                        'http://www.example.com',
                                        function(response) {
                                           //your response as html of that page

                                        });

从上面的脚本中我得到了该页面的整个html并获得了json数据。然后通过使用字符串操作,我找到了我想要的下一个url的确切变量。