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 就比较难去