2014-09-26 59 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得到,正則表達式+解析它,並找出如何構建您實際需要的網址。