真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

PHP獲取curl數(shù)據(jù) php curl file_get_contents

php獲取數(shù)據(jù)為什么curl獲取不完整

因?yàn)?,PHP CURL庫默認(rèn)1024字節(jié)的長(zhǎng)度不等待數(shù)據(jù)的返回,所以你那段代碼需增加一項(xiàng)配置:

成都創(chuàng)新互聯(lián)自2013年創(chuàng)立以來,先為銅梁等服務(wù)建站,銅梁等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為銅梁企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));

給你一個(gè)更全面的封裝方法:

function req_curl($url, $status = null, $options = array())

{

$res = '';

$options = array_merge(array(

'follow_local' = true,

'timeout' = 30,

'max_redirects' = 4,

'binary_transfer' = false,

'include_header' = false,

'no_body' = false,

'cookie_location' = dirname(__FILE__) . '/cookie',

'useragent' = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1',

'post' = array() ,

'referer' = null,

'ssl_verifypeer' = 0,

'ssl_verifyhost' = 0,

'headers' = array(

'Expect:'

) ,

'auth_name' = '',

'auth_pass' = '',

'session' = false

) , $options);

$options['url'] = $url;

$s = curl_init();

if (!$s) return false;

curl_setopt($s, CURLOPT_URL, $options['url']);

curl_setopt($s, CURLOPT_HTTPHEADER, $options['headers']);

curl_setopt($s, CURLOPT_SSL_VERIFYPEER, $options['ssl_verifypeer']);

curl_setopt($s, CURLOPT_SSL_VERIFYHOST, $options['ssl_verifyhost']);

curl_setopt($s, CURLOPT_TIMEOUT, $options['timeout']);

curl_setopt($s, CURLOPT_MAXREDIRS, $options['max_redirects']);

curl_setopt($s, CURLOPT_RETURNTRANSFER, true);

curl_setopt($s, CURLOPT_FOLLOWLOCATION, $options['follow_local']);

curl_setopt($s, CURLOPT_COOKIEJAR, $options['cookie_location']);

curl_setopt($s, CURLOPT_COOKIEFILE, $options['cookie_location']);

if (!empty($options['auth_name']) is_string($options['auth_name']))

{

curl_setopt($s, CURLOPT_USERPWD, $options['auth_name'] . ':' . $options['auth_pass']);

}

if (!empty($options['post']))

{

curl_setopt($s, CURLOPT_POST, true);

curl_setopt($s, CURLOPT_POSTFIELDS, $options['post']);

//curl_setopt($s, CURLOPT_POSTFIELDS, array('username' = 'aeon', 'password' = '111111'));

}

if ($options['include_header'])

{

curl_setopt($s, CURLOPT_HEADER, true);

}

if ($options['no_body'])

{

curl_setopt($s, CURLOPT_NOBODY, true);

}

if ($options['session'])

{

curl_setopt($s, CURLOPT_COOKIESESSION, true);

curl_setopt($s, CURLOPT_COOKIE, $options['session']);

}

curl_setopt($s, CURLOPT_USERAGENT, $options['useragent']);

curl_setopt($s, CURLOPT_REFERER, $options['referer']);

$res = curl_exec($s);

$status = curl_getinfo($s, CURLINFO_HTTP_CODE);

curl_close($s);

return $res;

}

php curl 取不到數(shù)據(jù) 幫我看下 是為什么

有以下幾種可能:

1、服務(wù)器端確實(shí)沒有數(shù)據(jù)返回;

2、curl寫錯(cuò)了;

3、試試下面這個(gè),我在用的

function?curl($url,$post?=?'POST',$data?=?array()){

$ch?=?curl_init();

$headers[]?=?"Accept-Charset:?utf-8";

curl_setopt($ch,?CURLOPT_URL,?$url);

curl_setopt($ch,?CURLOPT_CUSTOMREQUEST,?$post);

curl_setopt($ch,?CURLOPT_POSTFIELDS,?$data);

curl_setopt($ch,?CURLOPT_SSL_VERIFYPEER,?FALSE);

curl_setopt($ch,?CURLOPT_SSL_VERIFYHOST,?FALSE);

curl_setopt($ch,?CURLOPT_SSLVERSION,?1);

curl_setopt($ch,?CURLOPT_HTTPHEADER,?$headers);

curl_setopt($ch,?CURLOPT_USERAGENT,?'Mozilla/5.0?(compatible;?MSIE?5.01;?Windows?NT?5.0)');

curl_setopt($ch,?CURLOPT_FOLLOWLOCATION,?1);

curl_setopt($ch,?CURLOPT_AUTOREFERER,?1);

curl_setopt($ch,?CURLOPT_RETURNTRANSFER,?true);

$result?=?curl_exec($ch);

curl_close($ch);

return?json_decode($result,1);

}

如何在php中獲取curl請(qǐng)求的請(qǐng)求頭信息及相應(yīng)頭信息

oCurl?=?curl_init();

//?設(shè)置請(qǐng)求頭

$header[]?=?"Content-type:?application/x-www-form-urlencoded";

$user_agent?=?"Mozilla/5.0?(Windows?NT?6.1)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/33.0.1750.146?Safari/537.36";

curl_setopt($oCurl,?CURLOPT_URL,?$sUrl);

curl_setopt($oCurl,?CURLOPT_HTTPHEADER,$header);

//?返回?response_header,?該選項(xiàng)非常重要,如果不為?true,?只會(huì)獲得響應(yīng)的正文

curl_setopt($oCurl,?CURLOPT_HEADER,?true);

//?是否不需要響應(yīng)的正文,為了節(jié)省帶寬及時(shí)間,在只需要響應(yīng)頭的情況下可以不要正文

curl_setopt($oCurl,?CURLOPT_NOBODY,?true);

//?使用上面定義的?ua

curl_setopt($oCurl,?CURLOPT_USERAGENT,$user_agent);

curl_setopt($oCurl,?CURLOPT_RETURNTRANSFER,?1?);

//?不用?POST?方式請(qǐng)求,?意思就是通過?GET?請(qǐng)求

curl_setopt($oCurl,?CURLOPT_POST,?false);

$sContent?=?curl_exec($oCurl);

//?獲得響應(yīng)結(jié)果里的:頭大小

$headerSize?=?curl_getinfo($oCurl,?CURLINFO_HEADER_SIZE);

//?根據(jù)頭大小去獲取頭信息內(nèi)容

$header?=?substr($sContent,?0,?$headerSize);

curl_close($oCurl);

使用PHP的cURL庫進(jìn)行網(wǎng)頁抓取

使用PHP的cURL庫可以簡(jiǎn)單和有效地去抓網(wǎng)頁 你只需要運(yùn)行一個(gè)腳本 然后分析一下你所抓取的網(wǎng)頁 然后就可以以程序的方式得到你想要的數(shù)據(jù)了 無論是你想從從一個(gè)鏈接上取部分?jǐn)?shù)據(jù) 或是取一個(gè)XML文件并把其導(dǎo)入數(shù)據(jù)庫 那怕就是簡(jiǎn)單的獲取網(wǎng)頁內(nèi)容 cURL 是一個(gè)功能強(qiáng)大的PHP庫 本文主要講述如果使用這個(gè)PHP庫

啟用 cURL 設(shè)置

首先 我們得先要確定我們的PHP是否開啟了這個(gè)庫 你可以通過使用php_info()函數(shù)來得到這一信息

﹤?phpphpinfo();?﹥

如果你可以在網(wǎng)頁上看到下面的輸出 那么表示cURL庫已被開啟

如果你看到的話 那么你需要設(shè)置你的PHP并開啟這個(gè)庫 如果你是在Windows平臺(tái)下 那么非常簡(jiǎn)單 你需要改一改你的php ini文件的設(shè)置 找到php_curl dll 并取消前面的分號(hào)注釋就行了 如下所示

//取消下在的注釋extension=php_curl dll

如果你是在Linux下面 那么 你需要重新編譯你的PHP了 編輯時(shí) 你需要打開編譯參數(shù)——在configure命令上加上 –with curl 參數(shù)

一個(gè)小示例

如果一切就緒 下面是一個(gè)小例程

﹤?php// 初始化一個(gè) cURL 對(duì)象$curl = curl_init();

// 設(shè)置你需要抓取的URLcurl_setopt($curl CURLOPT_URL //cocre );

// 設(shè)置headercurl_setopt($curl CURLOPT_HEADER );

// 設(shè)置cURL 參數(shù) 要求結(jié)果保存到字符串中還是輸出到屏幕上 curl_setopt($curl CURLOPT_RETURNTRANSFER );

// 運(yùn)行cURL 請(qǐng)求網(wǎng)頁$data = curl_exec($curl);

// 關(guān)閉URL請(qǐng)求curl_close($curl);

// 顯示獲得的數(shù)據(jù)var_dump($data);

如何POST數(shù)據(jù)

上面是抓取網(wǎng)頁的代碼 下面則是向某個(gè)網(wǎng)頁P(yáng)OST數(shù)據(jù) 假設(shè)我們有一個(gè)處理表單的網(wǎng)址// example /sendSMS php 其可以接受兩個(gè)表單域 一個(gè)是電話號(hào)碼 一個(gè)是短信內(nèi)容

﹤?php$phoneNumber = ;$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 // example /sendSMS php );curl_setopt($ch CURLOPT_HEADER );curl_setopt($ch CURLOPT_RETURNTRANSFER );curl_setopt($ch CURLOPT_POST );curl_setopt($ch CURLOPT_POSTFIELDS $curlPost);$data = curl_exec();curl_close($ch);?﹥

從上面的程序我們可以看到 使用CURLOPT_POST設(shè)置HTTP協(xié)議的POST方法 而不是GET方法 然后以CURLOPT_POSTFIELDS設(shè)置POST的數(shù)據(jù)

   關(guān)于代理服務(wù)器

下面是一個(gè)如何使用代理服務(wù)器的示例 請(qǐng)注意其中高亮的代碼 代碼很簡(jiǎn)單 我就不用多說了

﹤?php $ch = curl_init();curl_setopt($ch CURLOPT_URL // example );curl_setopt($ch CURLOPT_HEADER );curl_setopt($ch CURLOPT_RETURNTRANSFER );curl_setopt($ch CURLOPT_HTTPPROXYTUNNEL );curl_setopt($ch CURLOPT_PROXY fakeproxy : );curl_setopt($ch CURLOPT_PROXYUSERPWD user:password );$data = curl_exec();curl_close($ch);?﹥ 關(guān)于SSL和Cookie

關(guān)于SSL也就是HTTPS協(xié)議 你只需要把CURLOPT_URL連接中的//變成//就可以了 當(dāng)然 還有一個(gè)參數(shù)叫CURLOPT_SSL_VERIFYHOST可以設(shè)置為驗(yàn)證站點(diǎn)

關(guān)于Cookie 你需要了解下面三個(gè)參數(shù)

CURLOPT_COOKIE 在當(dāng)面的會(huì)話中設(shè)置一個(gè)cookie

CURLOPT_COOKIEJAR 當(dāng)會(huì)話結(jié)束的時(shí)候保存一個(gè)Cookie

CURLOPT_COOKIEFILE Cookie的文件

HTTP服務(wù)器認(rèn)證

最后 我們來看一看HTTP服務(wù)器認(rèn)證的情況

﹤?php $ch = curl_init();curl_setopt($ch CURLOPT_URL // example );curl_setopt($ch CURLOPT_RETURNTRANSFER );curl_setopt($ch CURLOPT_HTTPAUTH CURLAUTH_BASIC);curl_setopt(CURLOPT_USERPWD [username]:[password] )

$data = curl_exec();curl_close($ch);?﹥

關(guān)于其它更多的內(nèi)容 請(qǐng)參看相關(guān)的cURL手冊(cè) lishixinzhi/Article/program/PHP/201311/21491

php curl 模擬登錄并獲取數(shù)據(jù)實(shí)例詳解

PHP的curl()在抓取網(wǎng)頁的效率方面是比較高的,而且支持多線程,而file_get_contents()效率就要稍低些,當(dāng)然,使用curl時(shí)需要開啟下curl擴(kuò)展。

代碼實(shí)戰(zhàn)

先來看登錄部分的代碼:

//模擬登錄

function

login_post($url,

$cookie,

$post)

{

$curl

=

curl_init();//初始化curl模塊

curl_setopt($curl,

CURLOPT_URL,

$url);//登錄提交的地址

curl_setopt($curl,

CURLOPT_HEADER,

0);//是否顯示頭信息

curl_setopt($curl,

CURLOPT_RETURNTRANSFER,

0);//是否自動(dòng)顯示返回的信息

curl_setopt($curl,

CURLOPT_COOKIEJAR,

$cookie);

//設(shè)置Cookie信息保存在指定的文件中

curl_setopt($curl,

CURLOPT_POST,

1);//post方式提交

curl_setopt($curl,

CURLOPT_POSTFIELDS,

http_build_query($post));//要提交的信息

curl_exec($curl);//執(zhí)行cURL

curl_close($curl);//關(guān)閉cURL資源,并且釋放系統(tǒng)資源

}

函數(shù)login_post()首先初始化curl_init(),然后使用curl_setopt()設(shè)置相關(guān)選項(xiàng)信息,包括要提交的url地址,保存的cookie文件,post的數(shù)據(jù)(用戶名和密碼等信息),是否返回信息等等,然后curl_exec執(zhí)行curl,最后curl_close()釋放資源。注意PHP自帶的http_build_query()可以將數(shù)組轉(zhuǎn)換成相連接的字符串。

接下來如果登錄成功后,我們要獲取登錄成功后的頁面信息。

//登錄成功后獲取數(shù)據(jù)

function

get_content($url,

$cookie)

{

$ch

=

curl_init();

curl_setopt($ch,

CURLOPT_URL,

$url);

curl_setopt($ch,

CURLOPT_HEADER,

0);

curl_setopt($ch,

CURLOPT_RETURNTRANSFER,

1);

curl_setopt($ch,

CURLOPT_COOKIEFILE,

$cookie);

//讀取cookie

$rs

=

curl_exec($ch);

//執(zhí)行cURL抓取頁面內(nèi)容

curl_close($ch);

return

$rs;

}

函數(shù)get_content()中也是先初始化curl,然后設(shè)置相關(guān)選項(xiàng),執(zhí)行curl,釋放資源。其中我們?cè)O(shè)置CURLOPT_RETURNTRANSFER為1即自動(dòng)返回信息,而CURLOPT_COOKIEFILE可以讀取到登錄時(shí)保存的cookie信息,最后將頁面內(nèi)容返回。

我們的最終目的是要獲取到模擬登錄后的信息,也就是只有正常登錄成功后才能獲取的有用信息。接下來我們以登錄開源中國的移動(dòng)版為例,看看如何抓取到登錄成功后的信息。

//設(shè)置post的數(shù)據(jù)

$post

=

array

(

'email'

=

'oschina賬戶',

'pwd'

=

'oschina密碼',

'goto_page'

=

'/my',

'error_page'

=

'/login',

'save_login'

=

'1',

'submit'

=

'現(xiàn)在登錄'

);

//登錄地址

$url

=

"";

//設(shè)置cookie保存路徑

$cookie

=

dirname(__FILE__)

.

'/cookie_oschina.txt';

//登錄后要獲取信息的地址

$url2

=

"";

//模擬登錄

login_post($url,

$cookie,

$post);

//獲取登錄頁的信息

$content

=

get_content($url2,

$cookie);

//刪除cookie文件

@

unlink($cookie);

//匹配頁面信息

$preg

=

"/td

class='portrait'(.*)\/td/i";

preg_match_all($preg,

$content,

$arr);

$str

=

$arr[1][0];

//輸出內(nèi)容

echo

$str;

使用總結(jié)

1、初始化curl;

2、使用curl_setopt設(shè)置目標(biāo)url,和其他選項(xiàng);

3、curl_exec,執(zhí)行curl;

4、執(zhí)行后,關(guān)閉curl;

5、輸出數(shù)據(jù)。

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

php獲取數(shù)據(jù)為什么curl獲取不完整?而用file_get_contents能獲取完整?

因?yàn)?,PHP CURL庫默認(rèn)1024字節(jié)的長(zhǎng)度不等待數(shù)據(jù)的返回,所以你那段代碼需增加一項(xiàng)配置:

curl_setopt($ch,?CURLOPT_HTTPHEADER,?array('Expect:'));

給你一個(gè)更全面的封裝方法:

function?req_curl($url,?$status?=?null,?$options?=?array())

{

$res?=?'';

$options?=?array_merge(array(

'follow_local'?=?true,

'timeout'?=?30,

'max_redirects'?=?4,

'binary_transfer'?=?false,

'include_header'?=?false,

'no_body'?=?false,

'cookie_location'?=?dirname(__FILE__)?.?'/cookie',

'useragent'?=?'Mozilla/4.0?(compatible;?MSIE?6.0;?Windows?NT?5.1',

'post'?=?array()?,

'referer'?=?null,

'ssl_verifypeer'?=?0,

'ssl_verifyhost'?=?0,

'headers'?=?array(

'Expect:'

)?,

'auth_name'?=?'',

'auth_pass'?=?'',

'session'?=?false

)?,?$options);

$options['url']?=?$url;

$s?=?curl_init();

if?(!$s)?return?false;

curl_setopt($s,?CURLOPT_URL,?$options['url']);

curl_setopt($s,?CURLOPT_HTTPHEADER,?$options['headers']);

curl_setopt($s,?CURLOPT_SSL_VERIFYPEER,?$options['ssl_verifypeer']);

curl_setopt($s,?CURLOPT_SSL_VERIFYHOST,?$options['ssl_verifyhost']);

curl_setopt($s,?CURLOPT_TIMEOUT,?$options['timeout']);

curl_setopt($s,?CURLOPT_MAXREDIRS,?$options['max_redirects']);

curl_setopt($s,?CURLOPT_RETURNTRANSFER,?true);

curl_setopt($s,?CURLOPT_FOLLOWLOCATION,?$options['follow_local']);

curl_setopt($s,?CURLOPT_COOKIEJAR,?$options['cookie_location']);

curl_setopt($s,?CURLOPT_COOKIEFILE,?$options['cookie_location']);

if?(!empty($options['auth_name'])??is_string($options['auth_name']))

{

curl_setopt($s,?CURLOPT_USERPWD,?$options['auth_name']?.?':'?.?$options['auth_pass']);

}

if?(!empty($options['post']))

{

curl_setopt($s,?CURLOPT_POST,?true);

curl_setopt($s,?CURLOPT_POSTFIELDS,?$options['post']);

//curl_setopt($s,?CURLOPT_POSTFIELDS,?array('username'?=?'aeon',?'password'?=?'111111'));

}

if?($options['include_header'])

{

curl_setopt($s,?CURLOPT_HEADER,?true);

}

if?($options['no_body'])

{

curl_setopt($s,?CURLOPT_NOBODY,?true);

}

if?($options['session'])

{

curl_setopt($s,?CURLOPT_COOKIESESSION,?true);

curl_setopt($s,?CURLOPT_COOKIE,?$options['session']);

}

curl_setopt($s,?CURLOPT_USERAGENT,?$options['useragent']);

curl_setopt($s,?CURLOPT_REFERER,?$options['referer']);

$res?=?curl_exec($s);

$status?=?curl_getinfo($s,?CURLINFO_HTTP_CODE);

curl_close($s);

return?$res;

}


網(wǎng)站標(biāo)題:PHP獲取curl數(shù)據(jù) php curl file_get_contents
地址分享:http://weahome.cn/article/hpseeg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部