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