发表于 2011年06月17日
php curl常用的5个例子 (转)
php curl常用的5个例子(转) 转载请注明 作者:海底苍鹰 地址:http://blog.51yip.com/php/1039.html 我用php ,curl主要是抓取数据,当然我们可以用其他的方法来抓取,比如fsockopen,file_get_contents等。但是只能抓那些能直接访问的页面,如果要抓取有页面访问控制的页面,或者是登录以后的页面就比较困难了。 1,抓取无访问控制文件 查看复制打印? <?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, “http://localhost/mytest/phpinfo.php”); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //如果把这行注释掉的话,就会直接输出 $result=curl_exec($ch); curl_close($ch); ?> 2,使用代理进行抓取 为什么要使用代理进行抓取呢?以google为例吧,如果去抓google的数据,短时间内抓的很频繁的话,你就抓取不到了。google对你的ip地址做限制这个时候,你可以换代理重新抓。 查看复制打印? <?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, “http://blog.51yip.com”); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE); curl_setopt($ch, CURLOPT_PROXY, 125.21.23.6:8080); //url_setopt($ch, CURLOPT_PROXYUSERPWD, ’user:password’);如果要密码的话,加上这个 $result=curl_exec($ch); curl_close($ch); ?> 3,post数据后,抓取数据 单独说一下数据提交数据,因为用 curl的时候,很多时候会有数据交互的,所以比较重要的。 查看复制打印? <?php $ch = curl_init(); /*在这里需要注意的是,要提交的数据不能是二维数组或者更高 *例如array(‘name’=>serialize(array(‘tank’,’zhang’)),’sex’=>1,’birth’=>’20101010′) *例如array(‘name’=>array(‘tank’,’zhang’),’sex’=>1,’birth’=>’20101010′)这样会报错的*/ $data = array(‘name’ => ‘test’, ‘sex’=>1,‘birth’=>’20101010′); curl_setopt($ch, CURLOPT_URL, ‘http://localhost/mytest/curl/upload.php’); curl_setopt($ch, CURLOPT_POST, 1); [...]


TOP