• 专注于网站建设,网络推广,关键词优化,SEO优化,专业的网站建设开发团队!
首页 > IT技术 > PHP > 内容

PHP之CURL抓取数据

2015-06-10 22:25:54   来源:叶景网络
    CURL 是一个功能强大的PHP库,使用PHP的CURL库可以简单和有效地去抓网页中的内容,下面简单的介绍一下CURL的用法。
    启用 cURL 设置
    首先,我们得先要确定我们的PHP是否开启了这个库,你可以通过使用php_info()函数来得到这一信息。
    <?php 
    phpinfo(); 
    ?>
    如果你可以在网页上看到下面的输出,那么表示cURL库已被开启。
    如果你看到的话,那么你需要设置你的PHP并开启这个库。如果你是在Windows平台下,那么非常简单,你需要改一改你的php.ini文件的设置,找到php_curl.dll,并取消前面的分号注释就行了。如下所示:
    //取消下在的注释 
    extension=php_curl.dll
    如果你是在Linux下面,那么,你需要重新编译你的PHP了,编辑时,你需要打开编译参数——在configure命令上加上“–with-curl” 参数。
    一个小示例
    如果一切就绪,下面是一个小例程:
    <?php 
    // 初始化一个 cURL 对象 
    $curl = curl_init(); 
    // 设置你需要抓取的URL 
    curl_setopt($curl, CURLOPT_URL, 'http://cocre.com'); 
    // 设置header 
    curl_setopt($curl, CURLOPT_HEADER, 1); 
    // 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
    // 运行cURL,请求网页 
    $data = curl_exec($curl); 
    // 关闭URL请求 
    curl_close($curl); 
    // 显示获得的数据 
    var_dump($data); 
    ?>
    如何POST数据
    上面是抓取网页的代码,下面则是向某个网页POST数据。假设我们有一个处理表单的网址http://www.example.com/sendSMS.php,其可以接受两个表单域,一个是电话号码,一个是短信内容。
    <?php 
    $phoneNumber = '13912345678'; 
    $message = 'This message was generated by curl and php'; 
    $curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' . urlencode($message) . '&SUBMIT=Send'; 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/sendSMS.php'); 
    curl_setopt($ch, CURLOPT_HEADER, 1); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); 
    $data = curl_exec();curl_close($ch); 
    ?>
    从上面的程序我们可以看到,使用CURLOPT_POST设置HTTP协议的POST方法,而不是GET方法,然后以CURLOPT_POSTFIELDS设置POST的数据。
    关于代理服务器
    下面是一个如何使用代理服务器的示例。请注意其中高亮的代码,代码很简单,我就不用多说了。
    <?php 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, 'http://www.example.com'); 
    curl_setopt($ch, CURLOPT_HEADER, 1); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1); 
    curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080'); 
    curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password'); 
    $data = curl_exec();curl_close($ch); 
    ?>
    关于SSL和Cookie
    关于SSL也就是HTTPS协议,你只需要把CURLOPT_URL连接中的http://变成https://就可以了。当然,还有一个参数叫CURLOPT_SSL_VERIFYHOST可以设置为验证站点。
    关于Cookie,你需要了解下面三个参数:
    CURLOPT_COOKIE,在当面的会话中设置一个cookie
    CURLOPT_COOKIEJAR,当会话结束的时候保存一个Cookie
    CURLOPT_COOKIEFILE,Cookie的文件。
    HTTP服务器认证
    最后,我们来看一看HTTP服务器认证的情况。
    <?php 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, 'http://www.example.com'); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
    curl_setopt(CURLOPT_USERPWD, '[username]:[password]') 
    $data = curl_exec(); 
    curl_close($ch); 
    ?>
    实例:
    function mycurl($url){//CURL远程抓取数据函数
    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL,$url); //数据发送地址
    curl_setopt($curl, CURLOPT_POST, 0); //启用时会发送一个常规的POST请求
    curl_setopt($curl, CURLOPT_POSTFIELDS, ''); //curl post 提交数据
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);//是否直接输出到浏览器1为不输出,可赋值给数据变量,0为直接输出到浏览器
    curl_setopt($curl, CURLOPT_HEADER, false);//是否显示头部信息
    $data = curl_exec($curl); 
    curl_close($curl);
    return $data;
    }
    关于其它更多的内容,请参看相关的cURL手册。
叶景网络,网络推广,网站建设
特别推荐RECOMMEND
搜索引擎网站关键词seo优化的意义
视频推广怎么做
网站seo优化怎么做关键词排上首页?
SEO介绍什么叫搜索引擎网站关键词优化
seo优化怎样做提升关键词排名
热点图文Hot
PHP通过soap调用.net接口asmx文件 PHP通过soap调用.ne
PHP开发环境配置 PHP开发环境配置
wamp集成环境的虚拟域名配置方法 wamp集成环境的虚拟
wamp独立安装配置 wamp独立安装配置
关注排行RANKING
1

PHP通过soap调用.net接口asmx文件

PHP通过soap调用.net接口asmx文件 叶景网络(www cngxit com),致力于互联网品牌建设与网络营销,专业领域包括网...

2

PHP开发环境配置

PHP开发环境配置 下载PHP安装程序,并解压缩。(下载页面为http: www php net downloads php,下...

3

wamp集成环境的虚拟域名配置方法

wamp集成环境的虚拟域名配置方法 最近,发现身边很多人用wamp集成环境,这个虽然比较快捷,一步到位,但是只能访...

4

wamp独立安装配置

wamp独立安装配置 apache 中的 httpd conf LoadModule php5_module "D: lamp php5 php5apache2_2 dll " 加载模块并开启

5

php 获取今天明天昨天时间戳

php 获取今天明天昨天时间戳 叶景网络(www cngxit com),致力于互联网品牌建设与网络营销,专业领域包括网...

6

PHP获取服务器信息 MySql版本和浏览器信息

PHP获取服务器信息 MySql版本和浏览器信息 1、$_SESSION[ PHP_SELF ] -- 获取当前正在执行脚本的文件名 2...

7

smarty 截取字符串函数 truncate的用法

smarty 截取字符串函数 truncate的用法 smarty truncate 截取字符串,从字符串开始处截取某长度的字符,默认的长度为8...

8

php编程常用函数方法等

php编程常用函数方法等 叶景网络(www cngxit com),致力于互联网品牌建设与网络营销,专业领域包括网站...

9

如何让ThinkPHP的模板引擎达到最佳效率

如何让ThinkPHP的模板引擎达到最佳效率 默认情况下ThinkPHP框架系统默认使用的模板引擎是内置模板引擎。内置模板引擎支持模板文...