• 迎丰收 晒丰收 庆丰收 2018-10-15
  • “捂脸表情”被注册成商标?申请人不认为商标侵权 2018-10-15
  • 战巡南海、绕岛巡航…空军有“飞出去”的主心骨 2018-10-14
  • 幼儿园要求家长写一万字读后感:不能这样玩家长|幼儿园|家长-教育时讯 2018-10-13
  • 中国故宫文物展在希腊举行 2018-10-13
  • 車·晓 第26期 車企官方降价真相幾何? 2018-10-12
  • 宝沃总裁杨嵩:曾和奔驰宝马同水平 已不能同日而语 2018-10-11
  • 新时代党员干部要有更大的担当和作为 2018-10-10
  • “2018-雷霆”专项行动破获百余起台湾间谍案 2018-10-09
  • 朝韩首脑今起在平壤会晤 “金文会”将聚焦三大议题 2018-10-09
  • 2018顺义啤酒节--北京频道--人民网 2018-10-08
  • 台湾遭遇的“断交潮”有无化解之道? 2018-10-08
  • 习近平会见爱沙尼亚总统卡柳莱德 2018-10-08
  • 中国空间站研制建设正有序开展 坚持和平利用 2018-10-07
  • Idlib to further divide Ankara and Moscow 2018-10-06
  • PHP的cURL库简单和有效地抓网页

    栏目: 编程语言 发布于: 2014-05-19 07:56:20

    使用PHP的cURL库可以简单和有效地去抓网页。你只需要运行一个脚本,然后分析一下你所抓取的网页,然后就可以以程序的方式得到你想要的数据了。无论是你想从从一个链接上取部分数据,或是取一个XML文件并把其导入数据库,那怕就是简单的获取网页内容,cURL 是一个功能强大的PHP库。本文主要讲述如果使用这个PHP库。

    启用 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://www.rocksun.cn');

    // 设置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.rocksun.cn/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.rocksun.cn/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.rocksun.cn');
    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.rocksun.cn');
    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);
    ?>

     

    本站文章除注明转载外,均为本站原创或编译?;队魏涡问降淖?,但请务必注明出处。
    转载请注明:文章转载自 七星彩票平台
    本文标题:PHP的cURL库简单和有效地抓网页
    IT技术书籍推荐:
    Python 3面向对象编程
    Python 3面向对象编程
    达斯帝·菲利普斯 (Dusty Phillips) (作者), 肖鹏 (译者), 常贺 (译者), 石琳 (译者)
    Python 是一种面向对象的解释型语言,面向对象是其非常重要的特性。本书通过Python 的数据结构、语法、设计模式,从简单到复杂,从初级到高级,一步步通过例子来展示了Python 中面向对象的概念和原则。本书不是Python 的入门书籍,适合具有Python 基础经验的开发人员阅读。如果你拥有其他面向对象语言的经验,你会更容易理解本书的内容。