2015-06-25 21 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