使用PHP 的cURL 庫可以簡單和有效地去抓網頁。你只需要運行一個腳本,然後分析一下你所抓取的網頁,然後就可以以程序的方式得到你想要的數據了。無論是你想從從一個鏈接上取部分數據,或是取一個XML 文件並把其導入數據庫,那怕就是簡單的獲取網頁內容,cURL 是一個功能強大的PHP 庫。本文主要講述如果使用這個PHP 庫。
啟用 cURL 設置
首先,我們得先要確定我們的PHP 是否開啟了這個庫,你可以通過使用php_info() 函數來得到這一信息。
Php代碼
﹤?php
phpinfo();
?﹥
如果你可以在網頁上看到下面的輸出,那麽表示cURL 庫已被開啟。
如果你看到的話,那麽你需要設置你的PHP 並開啟這個庫。如果你是在Windows 平臺下,那麽非常簡單,你需要改一改你的php.ini 文件的設置,找到php_curl.dll ,並取消前面的分號註釋就行了。如下所示:
Php代碼
//取消下在的註釋
extension=php_curl.dll
如果你是在Linux 下面,那麽,你需要重新編譯你的PHP 了,編輯時,你需要打開編譯參數—— 在configure 命令上加上“–with-curl” 參數。
一個小示例
如果一切就緒,下面是一個小例程:
Php代碼
﹤?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代碼
﹤?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代碼
﹤?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代碼
﹤?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);
?﹥
总结,cURL关于http可以做三件事:
1,直接抓取某个地址的网页。
2,向某个地址post数据。
3,经过代理访问某个网页。也可以post。
其他,还有https和cookie。
關於其它更多的內容,請參看相關的cURL 手冊。
分享到:
相关推荐
本文实例讲述了php使用curl代理实现抓取数据的方法。分享给大家供大家参考,具体如下: <?php define ( 'IS_PROXY', true ); //是否启用代理 function async_get_url($url_array, $wait_usec = 0) { if (!is_...
3. **高级功能**:`php_curl`支持多种HTTP方法(GET、POST、PUT等),可以设置HTTP头,进行POST数据提交,处理cookies,使用代理服务器,以及进行SSL连接。还可以通过设置选项实现自动重定向、超时控制、错误处理等...
6. **代理支持**:如果需要通过代理服务器访问资源,cURL也可以轻松配置。 7. **自定义头信息**:可以添加自定义的HTTP头信息,如User-Agent、Cookie等。 8. **文件上传与下载**:通过cURL,可以实现文件的上传和...
### PHP cURL 使用实例详解 #### 一、cURL简介 cURL 是一款强大的命令行工具,用于通过URL从或向服务器传输数据。cURL 支持多种协议,包括 FTP、FTPS、HTTP、HTTPS、SCP、SFTP、TFTP、TELNET、DICT、FILE 和 LDAP ...
在PHP中,cURL库是一个强大的工具,用于执行HTTP和其他协议的请求,它允许开发者模拟浏览器行为,如发送POST请求、处理cookies、设置代理等。本文将深入解析PHP下的cURL用法,以便更好地理解和应用。 1. **初始化...
**PHP_Curl 使用详解** PHP_Curl 是 PHP 中的一个扩展,用于执行 HTTP、FTP、SMTP 等多种协议的网络请求。它通过 cURL 库实现了丰富的功能,包括支持 SSL 证书、POST 数据、PUT 操作、FTP 上传、代理设置、HTTP ...
然而,当我们在使用cURL与服务器交互时,可能会遇到一些异常情况,比如"nginx 499错误"。这个错误通常发生在Nginx服务器上,表示客户端已经关闭了连接,但服务器端还没有完成响应。下面我们将详细探讨这个问题及其...
在PHP中,cURL库通过`curl_init()`、`curl_setopt()`、`curl_exec()`和`curl_close()`等函数来使用。开发者需要逐个设置选项,然后执行请求,最后关闭连接。这虽然灵活,但可能会让代码变得复杂,尤其是对于频繁...
在PHP开发过程中,使用curl库来执行HTTP请求是一项常用的技术,尤其是当需要处理复杂的网络交互时。本文将详细介绍在使用curl访问特定域名时遇到405 Method Not Allowed错误的解决方法。首先,我们先来理解什么是405...
本文将详细介绍如何利用PHP实现一个Curl封装类,以及其使用方法。 首先,Curl封装类的基本结构通常包含初始化Curl句柄、设置请求选项、执行请求和处理响应等功能。下面是一个简单的Curl封装类的代码示例: ```php ...
- **CURL其他常用设置**:除了上述示例中的设置外,还可以通过`curl_setopt()`设置更多选项,如设置超时时间、代理服务器等。 - **文件流处理**:对于较大的文件,可以考虑将下载的内容直接写入到磁盘上,而不是保存...
本文将详细介绍`curl`在PHP中的应用,以及如何使用提供的`curl.exe`在CMD命令行环境下运行。 首先,`curl.exe`是一个可执行文件,它是libcurl库的一部分,可以在命令行环境中直接调用。在PHP中,通常我们使用`curl`...
1. `__construct()`:构造函数,可能用于初始化CURL会话,并设置默认的配置选项,如超时时间、用户代理等。 2. `setopt()`:设置CURL会话的选项,可以传递CURL常量,如`CURLOPT_URL`、`CURLOPT_RETURNTRANSFER`等,...
总的来说,这个示例提供了一个使用PHP和cURL实现短信验证码验证的完整流程,这对于构建安全的用户注册和登录系统至关重要。开发者可以通过学习这个示例来提升他们的技能,更好地理解和应用网络请求技术。
PHPcurl模拟IP浏览器请求是通过PHP的cURL扩展来实现的,它允许开发者发送HTTP请求,并自定义各种请求头,包括伪装成不同的浏览器以及设置源IP地址。下面将详细介绍这一技术及其相关知识点。 首先,我们要了解cURL是...
PHP CURL 模拟提交(支持代理),一个封装好的功能能类,直接调用就好了
因此,在实际应用中,需要适当控制并发数量,考虑使用代理IP池,以及合理地释放和重用cURL句柄以优化性能。 在标签"类库下载-php的curl多线程采集"中,我们可以理解为可能包含了实现这一功能的相关类库或脚本。在...
**PHP CURL详解** PHP的CURL库是一种强大的工具,用于在服务器端执行...通过以上讲解,你已经了解了PHP中CURL的基本使用方法和常见应用场景。结合提供的文档资源,你可以深入学习更多细节,提升你的网络请求处理能力。
本文实例讲述了php使用curl通过代理获取数据的实现方法。分享给大家供大家参考,具体如下: $curl=curl_init(); curl_setopt($curl, CURLOPT_URL, "http://www.baidu.com/"); curl_setopt($curl, CURLOPT_USERAGENT...
《PHP cURL 使用详解》 PHP cURL 是一个强大的库,用于在 PHP 中发送网络请求,包括抓取网页内容、模拟HTTP操作等。它使得开发者能够以编程方式获取和交互远程资源,无论这些资源是静态HTML、XML文件,还是动态API...