`
lhx1026
  • 浏览: 307073 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

php curl的几个例子

    博客分类:
  • php
阅读更多

原文地址:http://www.cmx8.cn/curl.html

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

PHP中的CURL函数库(Client URL Library Function)

curl_close — 关闭一个curl会话
curl_copy_handle — 拷贝一个curl连接资源的所有内容和参数
curl_errno — 返回一个包含当前会话错误信息的数字编号
curl_error — 返回一个包含当前会话错误信息的字符串
curl_exec — 执行一个curl会话
curl_getinfo — 获取一个curl连接资源句柄的信息
curl_init — 初始化一个curl会话
curl_multi_add_handle — 向curl批处理会话中添加单独的curl句柄资源
curl_multi_close — 关闭一个批处理句柄资源
curl_multi_exec — 解析一个curl批处理句柄
curl_multi_getcontent — 返回获取的输出的文本流
curl_multi_info_read — 获取当前解析的curl的相关传输信息
curl_multi_init — 初始化一个curl批处理句柄资源
curl_multi_remove_handle — 移除curl批处理句柄资源中的某个句柄资源
curl_multi_select — Get all the sockets associated with the cURL extension, which can then be "selected"
curl_setopt_array — 以数组的形式为一个curl设置会话参数
curl_setopt — 为一个curl设置会话参数
curl_version — 获取curl相关的版本信息

curl_init()函数的作用初始化一个curl会话,curl_init()函数唯一的一个参数是可选的,表示一个url地址。
curl_exec()函数的作用是执行一个curl会话,唯一的参数是curl_init()函数返回的句柄。
curl_close()函数的作用是关闭一个curl会话,唯一的参数是curl_init()函数返回的句柄。

例子一: 基本例子

// 初始化一个 cURL 对象
$curl = curl_init();

// 设置你需要抓取的URL
curl_setopt($curl, CURLOPT_URL, 'http://www.gvfish.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数据

sendSMS.php,其可以接受两个表单域,一个是电话号码,一个是短信内容。

$phoneNumber = '13812345678';
$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.gvfish.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);
 

 

例子三:使用代理服务器

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.gvfish.com');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
curl_setopt($ch, CURLOPT_PROXY, 'proxy.lxvoip.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');
$data = curl_exec();
curl_close($ch);
 

 

例子四: 模拟登录

Curl 模拟登录 discuz 程序,适合DZ7.0,将username改成你的用户名,userpass改成你的密码就可以了.

/**  
* Curl 模拟登录 discuz 程序  
* 尚未实现开启验证码的的论坛登录功能  
*/  
  
!extension_loaded('curl') && die('The curl extension is not loaded.');   
  
$discuz_url = 'http://www.gvfish.com';//论坛地址   
$login_url = $discuz_url .'/logging.php?action=login';//登录页地址   
$get_url = $discuz_url .'/my.php?item=threads'; //我的帖子   
  
$post_fields = array();   
//以下两项不需要修改   
$post_fields['loginfield'] = 'username';   
$post_fields['loginsubmit'] = 'true';   
//用户名和密码,必须填写   
$post_fields['username'] = 'lxvoip';   
$post_fields['password'] = '88888888';   
//安全提问   
$post_fields['questionid'] = 0;   
$post_fields['answer'] = '';   
//@todo验证码   
$post_fields['seccodeverify'] = '';   
  
//获取表单FORMHASH   
$ch = curl_init($login_url);   
curl_setopt($ch, CURLOPT_HEADER, 0);   
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   
$contents = curl_exec($ch);   
curl_close($ch);   
preg_match('/<input\s*type="hidden"\s*name="formhash"\s*value="(.*?)"\s*\/>/i', $contents, $matches);   
if(!empty($matches)) {   
    $formhash = $matches[1];   
} else {   
    die('Not found the forumhash.');   
}   
  
//POST数据,获取COOKIE   
$cookie_file = dirname(__FILE__) . '/cookie.txt';   
//$cookie_file = tempnam('/tmp');   
$ch = curl_init($login_url);   
curl_setopt($ch, CURLOPT_HEADER, 0);   
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   
curl_setopt($ch, CURLOPT_POST, 1);   
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);   
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);   
curl_exec($ch);   
curl_close($ch);   
  
//带着上面得到的COOKIE获取需要登录后才能查看的页面内容   
$ch = curl_init($get_url);   
curl_setopt($ch, CURLOPT_HEADER, 0);   
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);   
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);   
$contents = curl_exec($ch);   
curl_close($ch);   
  
var_dump($contents);   
 

 

 

 

 

 

分享到:
评论

相关推荐

    PHP使用CURL_MULTI实现多线程采集的例子

    这个例子中,通过比较使用`curl_multi`和`file_get_contents`获取相同数量的网页所需的时间,可以明显看出使用CURL_MULTI的性能优势。对于需要处理大量HTTP请求的场景,使用多线程采集可以显著提升程序的运行速度。 ...

    PHP的cURL库简介及用法示例_.docx

    首先,我们来看几个重要的cURL函数: 1. `curl_init()`:这是开始cURL会话的起点,可选参数是一个URL,用于设置初始请求的目标地址。 2. `curl_setopt()`:此函数用于设置cURL会话的各种选项,如请求类型(GET、...

    php的curl封装类用法实例_.docx

    这通常涉及到几个步骤: 1. **修改`php.ini`文件**: - 找到`php.ini`文件,可以通过运行`phpinfo()`来查找其位置。 - 在文件中找到`;extension=php_curl.dll`这一行,并去掉前面的分号(即取消注释)。 2. **...

    使用PHP curl模拟浏览器抓取网站信息

    在PHP中使用cURL,通常分为以下几个步骤: 1. `curl_init()`: 初始化cURL会话。这将返回一个cURL句柄,用于后续的配置和操作。 2. `curl_setopt()`: 配置cURL选项。你可以设置请求类型(GET、POST等)、URL、返回...

    PHP实现的curl批量请求操作示例

    总结一下,使用PHP实现的curl批量请求操作主要包括以下几个步骤: 1. 初始化多接口句柄`curl_multi_init()` 2. 对每个URL创建单独的cURL句柄并设置选项,添加到多接口句柄中`curl_setopt()`和`curl_multi_add_handle...

    PHP实现带重试功能的curl连接示例

    在这个示例中,我们设置了几个cURL选项: - `CURLOPT_URL`:设置要请求的URL。 - `CURLOPT_RETURNTRANSFER`:使cURL返回结果而不是直接打印。 - `CURLOPT_CONNECTTIMEOUT` 和 `CURLOPT_TIMEOUT`:分别设置连接超时和...

    PHP使用curl函数发送Post请求的注意事项

    在这个例子中,我们使用`curl_init()`初始化cURL会话,`curl_setopt()`设置各种选项,如URL、是否为POST请求、POST数据以及返回结果而不是直接输出。`http_build_query()`用于将关联数组转换为URL编码的字符串,这是...

    php使用CURL模拟GET与POST向微信接口提交及获取数据的方法

    在这个例子中,目的是发送一条包含天气信息的自定义消息给特定用户。首先,函数调用了`getAccessToken()`获取到access_token,然后构造了一个POST请求的URL,包含了access_token。接下来,定义了消息的结构,包括...

    php中curl使用指南

    首先,您需要了解cURL的几个关键函数: 1. curl_init():初始化一个新的cURL会话。 2. curl_setopt():设置cURL传输的各种选项,可以多次调用来设置多个选项。 3. curl_exec():执行一个cURL会话。 4. curl_getinfo...

    PHP通过curl获取接口URL的数据方法

    PHP通过curl获取接口URL的数据方法的知识点包括以下几个方面: 1. cURL库的概念和作用 cURL是一个用于传输数据的客户端库,支持多种协议,包括HTTP、HTTPS、FTP等。PHP中的cURL库允许开发者执行URL请求,比如GET和...

    浅谈PHP中的数据传输CURL

    CURL操作步骤通常包括以下几个部分: 1. 初始化CURL会话:使用`curl_init()`函数创建一个新的CURL会话。例如,要抓取百度首页,可以这样初始化: ```php $curl = curl_init('//www.jb51.net'); ``` 2. 配置CURL...

    php 模拟浏览器请求网页见容

    本示例中提到的`testgetcontent.php`文件很可能就是一个使用PHP进行HTTP请求的例子。 1. **file_get_contents函数**: PHP的`file_get_contents`函数可以直接读取URL的内容,简单易用。例如: ```php $url = '...

    详解php用curl调用接口方法,get和post两种方式

    在实际应用中,调用API通常需要考虑以下几个方面: 1. **错误处理**:确保在调用API时捕获可能出现的错误,如网络问题、无效响应等。 2. **安全性**:在传递敏感数据时,使用HTTPS进行加密传输,避免数据泄露。 3. ...

    Centos 5.5 Nginx+php+mysql成功安装案例

    在CentOS 5.5操作系统中,安装Nginx、PHP和MySQL的组合是一个常见的任务,这个过程可以分为几个关键步骤。以下是一个详细的指南,涵盖了从安装基础环境到配置服务的整个过程。 首先,我们需要确保系统中安装了必要...

    PHP实例开发源码—Google PageRank PR值在线查询PHP.zip

    在实际的代码实现中,可能会包含以下几个关键部分: 1. **用户界面**:通常是一个简单的HTML表单,用户输入要查询的URL,然后提交请求。 2. **PHP脚本**:接收到表单数据后,PHP脚本会处理URL,进行合法性检查,...

    PHP利用天气网API获取天气信息

    总的来说,通过PHP调用天气网API获取天气信息涉及以下几个步骤: 1. 注册并获取API密钥。 2. 使用PHP发送HTTP请求到API。 3. 解析返回的JSON数据。 4. 提取并显示所需天气信息。 5. 可选地,处理与天气相关的图片。 ...

    200个php源码

    PHP的核心知识点包括但不限于以下几点: 1. **语法基础**:变量、数据类型、运算符、控制结构(条件语句、循环语句)、函数、数组等。 2. **字符串与正则表达式**:PHP提供了丰富的字符串处理函数和正则表达式支持...

    php抓取图片的函数类.zip

    在这个函数类中,可能会包含以下几个关键部分: 1. **构造函数**:类的初始化方法,可能用于设置类的属性,如目标URL、保存路径等。 2. **网络请求方法**:用于发送HTTP请求,获取网页内容。可能使用了`file_get_...

    基于PHP的源码 net2ftp多国语言版.zip

    在深入研究net2ftp源码时,开发者会关注以下几个关键点: - **FTP协议实现**:如何使用PHP的fsockopen或cURL库来建立FTP连接,执行各种FTP命令。 - **安全性**:如何处理用户输入以防止SQL注入、跨站脚本攻击等。 -...

Global site tag (gtag.js) - Google Analytics