2015-06-25 16 views
3

我想用PHP做一個簡單的網絡爬蟲,我有問題得到給定的URL的HTML源代碼。我目前使用cURL來獲取源代碼。cURL沒有得到URL的HTML源代碼

我的代碼:

$url = "http://www.nytimes.com/"; 

    function url_get_contents($Url) { 
     if (!function_exists('curl_init')) { 
      die('CURL is not installed!'); 
     } 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL, $Url); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
     $output = curl_exec($ch); 
     if ($output === false) { die(curl_error($ch)); } 
     curl_close($ch); 
     return $output; 
    } 

    echo url_get_contents($url); 
    ?> 

眼下沒有得到迴應,而且沒有任何錯誤,所以它是一個有點神祕。任何建議或修正可以理解

編輯:我加入

如果($輸出===假){模具(curl_error($ CH)); }

給函數的中間,它結束了給我一個錯誤(最後!):

無法解析主機:www.nytimes.com

我還是真的不知道是什麼問題是。有任何想法嗎?

由於

+2

你從來沒有打擾檢查curl是否成功。 'if($ output === false){die(curl_error($ ch)); }' –

+0

http://stackoverflow.com/questions/6516902/how-to-get-response-using-curl-in-php應該有所幫助。 – Scalable

+3

'$ Url!= $ url' also - 變量區分大小寫 –

回答

2

事實證明,它不是一個捲曲問題

我的主機服務器(Ubuntu的VM)正在掀起一股「僅主機」網絡適配器的這阻止訪問其主機之外的所有其他IP或域,使cURL無法連接到URL。

一旦它被改爲「橋接」網絡適配器,我可以訪問外部世界。

希望這會有所幫助。

0

可變情況下的失配($url$Url)。變化:

function url_get_contents($Url) { 

function url_get_contents($url) { 
+0

這兩個變量用於不同的上下文中,在函數的內部和外部。再加上編輯後的問題表明該網址被正確地讀取。 –

+1

@AlvaroFlañoLarrondo這個答案在變量名稱*在函數*中未對齊的時候發佈在問題編輯之前。我敏銳地意識到,在兩種不同的情況下有兩個變量。 – Asaph