`
流浪鱼
  • 浏览: 1684956 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

curl_init函数用法

    博客分类:
  • php
 
阅读更多

使用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()函数返回的句柄。

例子一: 基本例子

基本例子

﹤?php

// 初始化一个 cURL 对象

$curl = curl_init();

// 设置你需要抓取的URL

curl_setopt($curl, CURLOPT_URL, 'http://www.cmx8.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数据

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

POST数据

﹤?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.lxvoip.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);

?﹥

例子三:使用代理服务器

使用代理服务器

﹤?php 

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://www.cmx8.cn');

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 程序

<?php   

  

  

!extension_loaded('curl') && die('The curl extension is not loaded.');   

  

$discuz_url = 'http://www.lxvoip.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_init()和curl_multi_init()多线程的速度比较详解

    实验中,使用`curl_init()` 连续抓取了5次同一个网页,然后用`curl_multi_init()` 同时处理5个相同的请求。结果表明,`curl_multi_init()` 在处理多请求时的总耗时通常会少于`curl_init()` 单线程的耗时,证明了多...

    php curl_init函数用法

    在执行多线程或批量操作时,可以使用 `curl_multi_init()` 和相关多线程 cURL 函数。 `curl_exec()` 用于执行初始化的 cURL 会话,返回执行结果。如果发生错误,可以通过 `curl_errno()` 获取错误号,`curl_error()...

    Fatal error: Call to undefined function curl_init()解决方法

    在这个示例代码中,我们使用 curl_init() 函数初始化一个 cURL 会话,然后使用 curl_setopt() 函数设置请求选项,接着使用 curl_exec() 函数执行请求,最后使用 curl_close() 函数关闭 cURL 会话。 六、结论 本文...

    在PHP中使用curl_init函数的说明

    ### curl_init函数的使用说明 curl_init()是php_curl库中用于初始化一个cURL会话的函数。此函数无需参数时,它会返回一个cURL资源标识符,用于后续的cURL函数操作。如果提供了URL作为参数,cURL会话会立即被设置为...

    php中的curl_multi系列函数用法例子__1.docx

    总的来说,`curl_multi`系列函数在PHP中用于并发执行多个cURL请求,通过合理的使用`curl_multi_init`、`curl_multi_add_handle`、`curl_multi_exec`、`curl_multi_getcontent`、`curl_multi_remove_handle`、`curl_...

    php运行出现Call to undefined function curl_init()的解决方法

    在上述代码中,curl_init()用于初始化一个新的cURL会话,curl_setopt()函数用于设置CURL会话的选项,curl_exec()用于执行cURL会话,curl_close()用于关闭cURL会话。CURLOPT_URL选项设置请求的URL地址,CURLOPT_...

    Curl.zip_C++ curl_DEMO_c++ curl_curl_curl c++

    - CURL库支持多线程,可以同时处理多个请求,使用`curl_multi_init()`和`curl_multi_add_handle()`等函数进行管理。 通过Curl.zip中的DEMO,我们可以看到这些概念如何在实际代码中体现,学习如何将CURL库有效地...

    curl_自定义进度条

    此外,如果你正在编写一个图形界面应用,你可能需要使用不同的方法来更新进度条,比如在GUI控件中直接修改进度值。 总的来说,通过`curl`的`CURLOPT_PROGRESSFUNCTION`选项,我们可以灵活地实现自定义的下载进度条...

    libcurl静态库

    2. **创建会话**: `curl_easy_init()`函数创建一个CURL句柄,用于处理单个传输。 3. **设置选项**: 使用`curl_easy_setopt()`设置各种选项,如URL、HTTP方法、超时、代理、认证信息等。 4. **执行请求**: 调用`...

    PHP中curl_setopt函数用法实例分析

    PHP中的curl_setopt函数是用于设置cURL传输选项的函数,它...因此,对于Web开发人员而言,掌握cURL的使用方法是十分必要的。通过了解和运用本文中提到的curl_setopt函数用法,可以有效地解决各种网络请求中遇到的问题。

    php_curl_使用实例

    ### PHP cURL 使用实例详解 #### 一、cURL简介 cURL 是一款强大的命令行工具,用于通过URL从或向服务器传输数据。...cURL 是一个非常强大且灵活的工具,掌握其使用方法对于进行网络编程非常有帮助。

    Curl获取网络时间.zip_Curl获取网络时间_curl 时间_curl 网络时间_网络时间 curl_网络时间获取

    这个例子提供了一个基础的Curl获取网络时间的方法,对于初学者来说是一个很好的起点。在实际项目中,你可能需要添加错误处理、优化性能、或者根据具体需求进行修改。希望这个教程能帮助你理解如何在C++中利用Curl...

    libcurl使用easy模式阻塞卡死等问题的完美解决

    - **获取文件大小**:使用 `curl_easy_getinfo()` 函数的 `CURLINFO_CONTENT_LENGTH_DOWNLOAD` 参数。 - **下载进度显示**:通过设置 `CURLOPT_NOPROGRESS` 和 `CURLOPT_PROGRESSFUNCTION` 参数。 - **断点续传**:...

    curlcmd_curl_C++_cmd_源码

    接着,为了发起一个POST请求,我们需要使用`curl_easy_init()`函数初始化一个`curl`会话,然后设置请求选项,如URL、POST数据和HTTP方法。这可以通过`curl_easy_setopt()`函数完成。例如: ```cpp CURL *curl = ...

    WWW-Curl-3_per_www_curl_源码.rar

    7. **多线程支持**:Curl库支持多线程操作,允许同时进行多个网络请求,通过`curl_multi_init()`和`curl_multi_add_handle()`等函数实现。 8. **安全特性**:Curl支持SSL/TLS加密,可以处理HTTPS请求,同时可以进行...

    PHP技巧PHPCURL函数库.doc

    8. **curl_multi_系列函数**: 这些函数用于处理批量的cURL请求,如`curl_multi_init()`、`curl_multi_add_handle()`、`curl_multi_exec()`等,它们允许同时执行多个cURL会话,提高效率。 9. **curl_version()**: ...

    curl函数说明

    ### curl函数说明 ...本文详细介绍了一些常用函数的功能、参数、返回值以及使用示例,有助于开发者更高效地利用`cURL`进行网络通信开发。掌握这些函数不仅能提高开发效率,还能优化网络请求的性能表现。

    php中的curl_multi系列函数使用例子

    要开始使用curl_multi系列函数,首先需要调用curl_multi_init()函数初始化一个curl_multi资源。 ```php $mh = curl_multi_init(); ``` 步骤二:添加cURL子句柄 初始化后,通过curl_multi_add_handle()将多个由curl_...

Global site tag (gtag.js) - Google Analytics