2014-09-26 73 views
-1

我有URL这样 www.example.com/abc/xyz和加载时会变成不同的网址,如:获得具有JSON数据使用curl的重定向URL

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数据。

第二个URL是请求json数据,所以我无法跟踪它。我想要使用第一个URL的数据。

这里是我的代码:

$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) 
+0

你想curl阻止重定向到第二个url吗? – Himal 2014-09-26 10:11:56

+0

我只想要第二个网址。但它没有得到curl_getinfo($ ch,CURLINFO_EFFECTIVE_URL); – chirag 2014-09-26 10:19:20

+0

是的,这就是我的意思。要获得第二个网址,您必须阻止重定向,并从“位置”标头中获取第二个网址。 – Himal 2014-09-26 10:21:29

回答

0

我已经找到了获得json参数的方法,但是我无法通过curl来获得这些参数。这里是解决方案:

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

             }); 

从上面的脚本,我得到了网页的整个HTML,也通过我发现,我想为我的下一个确切的URL变量的字符串操作获得JSON data.Then。

1

,你的愿望得到所谓“第二URL”是由JavaScript产生。

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

既不curl,也不wget或file_get_contents会得到你想要的,因为没有解析/执行JavaScript代码。

如果你想模拟创建第二个URL,你可以尝试在该页面上检查JS(我会说坏主意,需要大量工作,并且对外部逻辑改变很敏感)或者试着看看SO:Get sourcecode after javascript execution with curl,然后使用JS引擎获取第二个URL。

如果你想玩模拟URL,我会看看加载的HTML中的var facetContextJSON - 它是某种配置JSON,你可以通过cURL得到,正则表达式+解析它,并找出如何构建您实际需要的网址。