PHP的curl库代码使用

欢迎访问个人原创地址: http://www.phpthinking.com/archives/468

使用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://coolshell.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.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);

?>

时间: 2024-12-12 06:05:30

PHP的curl库代码使用的相关文章

linux编译curl库的动态库so

转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) curl库是一个很强大的http开源库,c++里面能够很方便的和http服务器交互. 最近项目开始内测,开始接登录和充值的SDK,选择了使用curl库来和第三方http服务器交互. 在windows下还是很容易使用,如何使用的案例比比皆是,而且很容易就找到已经编译好的动态库进行测试,但是最后在linux下部署的时候,发现不好找已经编译好的so库文件,最后没办法只好自理更生. 下载了源码下来看,配置文件看

使用curl库

Windows下使用curl库: 到http://curl.haxx.se/下了个curl的源码下来,源码是用VC6编译的,我在VS2005下重新进行编译,居然只有一个警告. cUrl的实现代码是放在动态库中,将动态库以静态方式编译生成libcurl.lib,然后将cUrl源码目录下的"include/curl"文件夹复制到自己的项目下(如图1). 图1 接下来就可以直接调用curl库了,下面是一个网上找来的简单例子: [cpp] view plaincopy #include &qu

PHP的cURL库

原文链接:http://coolshell.cn/articles/664.html 参考链接:http://www.runoob.com/php/php-ref-curl.html 使用PHP的cURL库可以简单和有效地去抓网页.你只需要运行一个脚本,然后分析一下你所抓取的网页,然后就可以以程序的方式得到你想要的数据了.无论 是你想从从一个链接上取部分数据,或是取一个XML文件并把其导入数据库,那怕就是简单的获取网页内容,cURL 是一个功能强大的PHP库.本文主要讲述如果使用这个PHP库.

PHP中的cURL库

1.cURL库 cURL库是一个非常强大的开源库,支持很多协议,包括HTTP.FTP.TELNET等,在微信开发中,我们使用它来发送HTTP请求.它给我们带来的好处是可以通过灵活的选项设置不同的HTTP协议参数,并且支持HTTPS. 要使用cURL库那么你的php版本里面必须包含该库的扩展(就如你使用gd库一样) 请求原理(权威PHP指南): 2.cURL四步走 第一步:创建curl,使用curl_init()函数 第二步:设置curl,使用curl_setopt()函数 第三步:执行curl,

采用curl库

Windows通过使用curl库: 到http://curl.haxx.se/下了个curl的源代码下来,源代码是用VC6编译的,我在VS2005下又一次进行编译.竟然仅仅有一个警告. cUrl的实现代码是放在动态库中.将动态库以静态方式编译生成libcurl.lib.然后将cUrl源代码文件夹下的"include/curl"文件夹拷贝到自己的项目下(如图1). 图1 接下来就能够直接调用curl库了,以下是一个网上找来的简单样例: [cpp] view plaincopy #incl

CURL库在C++程序中的运用浅析

最近由于要做一个爬虫项目,要对很多网站进行爬取,所以一直都在看这方面的文章.在翻阅了很多资料后,下载了一个curl库,着实对项目有了很大的帮助. 一.LibCurl基本编程框架 二.一些基本的函数 三.curl_easy_setopt函数部分选项介绍 四.curl_easy_perform 函数说明(error 状态码) 五.libcurl使用的HTTP消息头六.获取http应答头信息 七.多线程问题 八.什么时候libcurl无法正常工作 九.关于密码 十.HTTP验证 十一.代码示例 1.基

推荐一个curl库,实现整站克隆功能

有时候经常会用到一些在线手册,比如国内或国外的,有些是访问速度慢,有些是作者直接吧网站关闭了,有些是服务器总是宕机,所以还是全盘克隆到自己服务器比较爽, 这里给大家推荐接触过的一个CURL库,可以实现整站克隆功能,对于复制一些手册站点还是非常实用的. 库特点: 给定一初始连接,初始链接以下的层级所有文件会拷贝到本地. 多次克隆可以配置是否覆盖. 可以配置是否下载图片. 所有链接替换为相对链接,所以可以随便rewrite. 绝对不会出现文件覆盖等问题. 克隆结果展示(这个克隆操作几秒钟就完成了):

CURL库的宏定义列表

列表CURL库一共有17个函数 curl_close:关闭CURL会话 curl_copy_handle:复制一个CURL会话句柄,同时3复制其所有参数 curl_errno:返回最后一个错误码 curl_error:返回一个字符串,用以描述当前会话的最后一个错误 curl_exec:执行当前会话 curl_getinfo:获取特定信息 curl_init:初始化CURL会话 curl_multi_add_handle:在一个多连接会话中添加一个句柄 curl_multi_close:关闭一个多

如何开发优秀的库代码

在系统规模越大越大.功能越来越复杂的当下,整个系统通常被拆分成多个功能模块,个人或团队负责其中的一个或多个模块.如果说约定好的接口是实现的标准的话,那么最后生成的库就是常见的最终的交付形式之一.那么,该如何开发出优秀的库代码呢? 首先,需要明确基本的功能需求.任何软件系统都是为了服务于具体的业务,业务的具体流程和要求就是对软件的需求.为了明确模块的具体需求,就需要对模块在整个系统中的位置有比较全面的了解,这样才能对它所在的上游接口和底层模块对它的限制和要求有深入的理解. 其次,使用通用的模型和数