PHP使用curl或者file_get_contents抓取远程url的网页内容

PHP使用curl或者file_get_contents函数抓取远程url的网页内容,这两个比较起来curl抓取效率比file_get_contents的高,推荐使用curl来抓取页面。

第一种方法:使用curl 抓取页面

/**
   * 远程获取url的内容, 此方法才是curl方法,须php支持
   * return 远程获取到内容
   * @param unknown_type $url,要获取内容的url
*/
function get_url_content($url)
{
	set_time_limit(0);
	$ch = curl_init();
    //$curlPost =   'pNUMBER='.$phoneNumber.'&MESSAGE='.urlencode($message).'&SUBMIT=Send';//拼接请求参数
	curl_setopt ($ch, CURLOPT_URL, $url);
	curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,10); //10 表示延迟的时间
	//curl_setopt($curl,CURLOPT_POST,1);//设置请求方式为post采用post的方法时使用
    //curl_seropt($curl,CURLOPT_POSTFIELDS,$curlPost);//设置post数据
	$result = curl_exec($ch);
	curl_close($ch);
	return $result;
	
}


第二种方法:使用file_get_contents抓取页面

/**
   * 此方法采用的php的内置的函数库,速度比curl 要慢很多,有时可能会拖慢服务器
   * $url 要获取内容的url
   * return 远程获取到的内容
*/
function get_content_url($url)
{
	return file_get_contents($url);
}


上面两种是最常用抓取页面的方法,这种方法的区别(网上)

curl的特点介绍:

学习才发现,curl支持很多协议,有FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE以及LDAP,也就是说,它能做到很多file_get_content做不到的事情。curl在php可以实现远程获取和采集内容;实现PHP网页版的FTP上传下载;实现模拟登陆;实现接口对接(API),数据传输;实现模拟Cookie;下载文件断点续传等等,功能十分强大。

了解curl一些基本的使用后,才发现其实并不难,只不过记住里面一些设置参数,难弄一点,但是我们记住几个常用的就可以了。

开启curl:

因为PHP默认是不支持curl功能的,因此如果要用curl的话,首先需要在php.ini中开启该功能,即去掉 ;extension= php_curl.dll 前面的分号,然后保存后重启apache/iis就好了。

file_get_content的特点介绍:

代码中使用file_get_content() 去获取URL内容 有2点问题

1。使用file_get_content() 会很耗时 因为他每次请求都会重新对DNS查询并不对DNS进行缓存,这样就导致每次请求很耗时经常服务器请求超时

2。如果请求的url带有header或者其他参数 file_get_content 就比较难去


本文永久地址:http://www.huanghaiping.com/article/9.html
本文出自 黄海平博客 ,转载时请注明出处及相应链接。

发表我的评论
  

网友最新评论 (0)

暂无评论
返回顶部