導航:首頁 > 編程語言 > phpcurl抓取數據

phpcurl抓取數據

發布時間:2022-08-10 19:53:19

A. thinkphp curl抓取的數據是怎樣的

使用PHP的cURL庫可以簡單和有效地去抓網頁。你只需要運行一個腳本,然後分析一下你所抓取的網頁,然後就可以以程序的方式得到你想要的數據 了。無論是你想從從一個鏈接上取部分數據,或是取一個XML文件並把其導入資料庫,那怕就是簡單的獲取網頁

B. php curl 模擬登錄並獲取數據實例詳解

PHP的curl()在抓取網頁的效率方面是比較高的,而且支持多線程,而file_get_contents()效率就要稍低些,當然,使用curl時需要開啟下curl擴展。
代碼實戰
先來看登錄部分的代碼:
//模擬登錄
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);//是否自動顯示返回的信息
curl_setopt($curl,
CURLOPT_COOKIEJAR,
$cookie);
//設置Cookie信息保存在指定的文件中
curl_setopt($curl,
CURLOPT_POST,
1);//post方式提交
curl_setopt($curl,
CURLOPT_POSTFIELDS,
http_build_query($post));//要提交的信息
curl_exec($curl);//執行cURL
curl_close($curl);//關閉cURL資源,並且釋放系統資源
}
函數login_post()首先初始化curl_init(),然後使用curl_setopt()設置相關選項信息,包括要提交的url地址,保存的cookie文件,post的數據(用戶名和密碼等信息),是否返回信息等等,然後curl_exec執行curl,最後curl_close()釋放資源。注意PHP自帶的http_build_query()可以將數組轉換成相連接的字元串。
接下來如果登錄成功後,我們要獲取登錄成功後的頁面信息。
//登錄成功後獲取數據
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);
//執行cURL抓取頁面內容
curl_close($ch);
return
$rs;
}
函數get_content()中也是先初始化curl,然後設置相關選項,執行curl,釋放資源。其中我們設置CURLOPT_RETURNTRANSFER為1即自動返回信息,而CURLOPT_COOKIEFILE可以讀取到登錄時保存的cookie信息,最後將頁面內容返回。
我們的最終目的是要獲取到模擬登錄後的信息,也就是只有正常登錄成功後才能獲取的有用信息。接下來我們以登錄開源中國的移動版為例,看看如何抓取到登錄成功後的信息。
//設置post的數據
$post
=
array
(
'email'
=>
'oschina賬戶',
'pwd'
=>
'oschina密碼',
'goto_page'
=>
'/my',
'error_page'
=>
'/login',
'save_login'
=>
'1',
'submit'
=>
'現在登錄'
);
//登錄地址
$url
=
"http://m.oschina.net/action/user/login";
//設置cookie保存路徑
$cookie
=
dirname(__FILE__)
.
'/cookie_oschina.txt';
//登錄後要獲取信息的地址
$url2
=
"http://m.oschina.net/my";
//模擬登錄
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];
//輸出內容
echo
$str;
使用總結
1、初始化curl;
2、使用curl_setopt設置目標url,和其他選項;
3、curl_exec,執行curl;
4、執行後,關閉curl;
5、輸出數據。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

C. 如何用php CURL 抓取微信網頁的內容

給你簡單介紹幾個吧
一、file_get_contents函數
$content = file_get_contents("URL");//URL就是你要獲取的頁面的地址
二、利用curl擴展
代碼如下:
function getCurl($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);//不輸出內容
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$result = curl_exec($ch);
curl_close ($ch);
return $result;
}

PS:需要安裝PHP的curl擴展

D. PHP用curl函數,抓取網頁數據,數據裡面的時間戳不能正常顯示,顯示為float(1.482130583E+12)

原因在於:PHP 數字超過一定長度時,會自動轉換為 科學計數法 的形式。


可以用PHP函數number_format()來格式化數字,參考代碼如下:


<?php
$num=number_format(1.2313223123423E+017,'','','');
echo$num;//輸出「123132231234230000」
?>

E. 通過PHP 的 curl 如何抓取進港碼頭的數據

使用PHP的cURL庫可以簡單和有效地去抓網頁。你只需要運行一個腳本,然後分析一下你所抓取的網頁,然後就可以以程序的方式得到你想要的數據 了。無論是你想從從一個鏈接上取部分數據,或是取一個XML文件並把其導入資料庫,那怕就是簡單的獲取網頁內容,cURL 是一個功能強大的PHP庫。本文主要講述如果使用這個PHP庫。
//如果要轉載本文請註明出處,免的出現版權紛爭,我不喜歡看到那種轉載了我的作品卻不註明出處的人 Seven{See7di#Gmail.com}
啟用 cURL 設置
首先,我們得先要確定我們的PHP是否開啟了這個庫,你可以通過使用php_info()函數來得到這一信息。
<?php
phpinfo();
?>
如果你可以在網頁上看到下面的輸出,那麼表示cURL庫已被開啟。
如果你看到的話,那麼你需要設置你的PHP並開啟這個庫。如果你是在Windows平台下,那麼非常簡單,你需要改一改你的php.ini文件的設置,找到php_curl.dll,並取消前面的分號注釋就行了。如下所示:

//取消下在的注釋
extension=php_curl.dll
如果你是在Linux下面,那麼,你需要重新編譯你的PHP了,編輯時,你需要打開編譯參數——在configure命令上加上「–with-curl」 參數。
一個小示例
如果一切就緒,下面是一個小常式:

<?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_mp($data);
?>
如何POST數據
上面是抓取網頁的代碼,下面則是向某個網頁POST數據。假設我們有一個處理表單的網址http://www.example.com/sendSMS.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
$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
$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);
?>

F. php curl 大量數據採集

這個需要配合js,打開一個html頁面,首先js用ajax請求頁面,返回第一個頁面信息確定處理完畢(ajax有強制同步功能),ajax再訪問第二個頁面。(或者根據伺服器狀況,你可以同時提交幾個URL,跑幾個相同的頁面)
參數可以由js產生並傳遞url,php後台頁面根據URL抓頁面。然後ajax通過php,在資料庫或者是哪裡設一個標量,標明檢測到哪裡。由於前台的html頁面執行多少時候都沒問題,這樣php的內存限制和執行時間限制就解決了。
因為不會浪費大量的資源用一個頁面來跑一個瞬間500次的for循環了。(你的500次for循環死了原因可能是獲取的數據太多,大過了php限制的內存)
不過印象中curl好像也有強制同步的選項,就是等待一個抓取後再執行下一步。但是這個500次都是用一個頁面線程處理,也就是說肯定會遠遠大於30秒的默認執行時間。

G. php的curl怎麼爬取網頁內容

編程爬蟲比較難入門。
建議使用操作簡單、功能強大的八爪魚。

八爪魚具有以下特點:

1、行業知名,全球300萬+用戶都在使用。
2、內置數百個主流網站採集模板,滿足絕大部分採集需求,會滑鼠點擊以及文本輸入即可採集數據。
3、智能採集,自動識別多種驗證碼,提供代理IP池,結合UA切換,可有效突破封鎖,順利採集數據。
4、可視化操作流程,眼見即可采(可採集市面上98%的網站),不管是圖片電話,還是自媒體論壇,支持所有業務渠道的爬蟲,滿足各種採集需求。
5、雲採集,5000台雲伺服器,24*7高效穩定採集,結合API可無縫對接內部系統,定期同步爬數據。
6、支持企業私有化部署,可部署在隔離內網環境。提供定製化部署方案,滿足多種數據安全級別。

H. php curl 抓取頁面幾種方法介紹

使用代理進行抓取
為什麼要使用代理進行抓取呢?以google為例吧,如果去抓google的數據,短時間內抓的很頻繁的話,你就抓取不到了。google對你的ip地址做限制這個時候,你可以換代理重新抓。

代碼如下
<?php
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,"
);
curl_setopt($ch,CURLOPT_HEADER,false);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_HTTPPROXYTUNNEL,TRUE);
curl_setopt($ch,CURLOPT_PROXY,125.21.23.6:8080);
//url_setopt($ch,CURLOPT_PROXYUSERPWD,'user:password');如果要密碼的話,加上這個
$result=curl_exec($ch);
curl_close($ch);
?>

I. 關於phpCURL使用ip代理伺服器抓取頁面的問題

$curl = curl_init ();
curl_setopt ( $curl, CURLOPT_URL, 需要抓取的url地址 );
curl_setopt ( $curl, CURLOPT_HEADER, 0 );
curl_setopt ( $curl, CURLOPT_RETURNTRANSFER, 1 ); // 禁止調用時就輸出獲取到的數據
curl_setopt ( $curl, CURLOPT_FOLLOWLOCATION, 1 );
curl_setopt ( $curl, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt ( $curl, CURLOPT_SSL_VERIFYHOST, false );

// curl_setopt($ch,CURLOPT_TIMEOUT,20);//10秒
// curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,20);//10秒
// curl_setopt($ch, CURLOPT_REFERER, $collectConfigArray ['refererUrl']);

$collectHtml = curl_exec ( $curl );
echo $collectHtml;
unset ( $curl );
curl_close ( $ch );

閱讀全文

與phpcurl抓取數據相關的資料

熱點內容
pdf填色 瀏覽:145
ie運行java 瀏覽:637
單相空調壓縮機的構造 瀏覽:136
迅雷app的回收站在哪裡啊 瀏覽:595
加密技術的特點包括4點 瀏覽:561
pcre源碼包 瀏覽:67
崑山ug數控編程培訓 瀏覽:520
integer類源碼 瀏覽:819
java排序的時間復雜度 瀏覽:859
伺服器陣列卡壞了怎麼維修 瀏覽:537
shm演算法 瀏覽:520
可愛的程序員陸漓離開 瀏覽:608
如何把掃描文件做成pdf格式 瀏覽:626
php個性qq源碼 瀏覽:821
初學c語言顯示源未編譯 瀏覽:247
資產概況源碼 瀏覽:472
dos命令建文件夾命令 瀏覽:381
解壓的密碼htm被屏蔽 瀏覽:504
冬天太冷冰箱壓縮機不啟動怎麼辦 瀏覽:85
手機打開vcf需要什麼編譯器 瀏覽:912