欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

phpcurl獲取數(shù)據(jù) php獲取url內(nèi)容

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

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

二道網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)于2013年開始到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)

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

先來(lái)看登錄部分的代碼:

//模擬登錄

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)換成相連接的字符串。

接下來(lái)如果登錄成功后,我們要獲取登錄成功后的頁(yè)面信息。

//登錄成功后獲取數(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抓取頁(yè)面內(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信息,最后將頁(yè)面內(nèi)容返回。

我們的最終目的是要獲取到模擬登錄后的信息,也就是只有正常登錄成功后才能獲取的有用信息。接下來(lái)我們以登錄開源中國(guó)的移動(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);

//獲取登錄頁(yè)的信息

$content

=

get_content($url2,

$cookie);

//刪除cookie文件

@

unlink($cookie);

//匹配頁(yè)面信息

$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ì)本站的支持!

通過(guò)PHP 的 curl 如何抓取進(jìn)港碼頭的數(shù)據(jù)?

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

//如果要轉(zhuǎn)載本文請(qǐng)注明出處,免的出現(xiàn)版權(quán)紛爭(zhēng),我不喜歡看到那種轉(zhuǎn)載了我的作品卻不注明出處的人 Seven{See7di#Gmail.com}

啟用 cURL 設(shè)置

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

?php

phpinfo();

?

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

如果你看到的話,那么你需要設(shè)置你的PHP并開啟這個(gè)庫(kù)。如果你是在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è)置你需要抓取的URL

curl_setopt($curl, CURLOPT_URL, '');

// 設(shè)置header

curl_setopt($curl, CURLOPT_HEADER, 1);

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

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

// 運(yùn)行cURL,請(qǐng)求網(wǎng)頁(yè)

$data = curl_exec($curl);

// 關(guān)閉URL請(qǐng)求

curl_close($curl);

// 顯示獲得的數(shù)據(jù)

var_dump($data);

?

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

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

?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, '');

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設(shè)置HTTP協(xié)議的POST方法,而不是GET方法,然后以CURLOPT_POSTFIELDS設(shè)置POST的數(shù)據(jù)。

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

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

?php

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, '');

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);

?

關(guān)于SSL和Cookie

關(guān)于SSL也就是HTTPS協(xié)議,你只需要把CURLOPT_URL連接中的http://變成https://就可以了。當(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)證

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

?php

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, '');

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);

?

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

因?yàn)椋琍HP CURL庫(kù)默認(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;

}

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

獲取請(qǐng)求頭信息,可以在curl_exec函數(shù)執(zhí)行前,添加代碼curl_setopt($ch,CURLINFO_HEADER_OUT,true);在curl_exec函數(shù)執(zhí)行后,通過(guò) curl_getinfo($ch,CURLINFO_HEADER_OUT) 來(lái)獲取curl執(zhí)行請(qǐng)求的請(qǐng)求數(shù)據(jù)。

獲取響應(yīng)頭信息,可以在curl_exec函數(shù)執(zhí)行前,添加代碼 curl_setopt($ch, CURLOPT_HEADER, true);curl_setopt($ch, CURLOPT_NOBODY,true); 之后 通過(guò)curl_exec函數(shù)來(lái)獲取響應(yīng)頭信息。獲取設(shè)置 curl_setopt($ch, CURLOPT_NOBODY,false);然后對(duì)curl_exec獲取的值通過(guò)\r\n\r\n進(jìn)行分割截取第一部分即為響應(yīng)頭信息。

php curl post獲取網(wǎng)頁(yè)得內(nèi)容post得傳入啥值?

url 獲取網(wǎng)頁(yè)及post數(shù)據(jù) 使用PHP的cURL庫(kù)可以簡(jiǎn)單和有效地去抓網(wǎng)頁(yè)。你只需要運(yùn)行一個(gè)腳本,然后分析一下你所抓 取的網(wǎng)頁(yè),然后就可以以程序的方式得到你想要的

網(wǎng)站欄目:phpcurl獲取數(shù)據(jù) php獲取url內(nèi)容
網(wǎng)站地址:http://chinadenli.net/article34/doogese.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版電子商務(wù)響應(yīng)式網(wǎng)站網(wǎng)站設(shè)計(jì)公司網(wǎng)站收錄定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)