国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php curl 模擬登錄并獲取數據實例詳解

2024-05-04 23:53:51
字體:
來源:轉載
供稿:網友

PHP的php/174885.html">php/79880.html">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、輸出數據。

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


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 巴楚县| 邢台县| 青河县| 兰溪市| 奉贤区| 宁强县| 沧源| 府谷县| 稷山县| 临沧市| 永丰县| 鹤山市| 沅陵县| 荆门市| 双辽市| 金沙县| 义马市| 尚义县| 双流县| 上虞市| 重庆市| 新泰市| 西青区| 蕉岭县| 康马县| 土默特右旗| 基隆市| 舒城县| 新乡县| 天峻县| 隆化县| 共和县| 临夏市| 布尔津县| 南木林县| 上饶市| 苍山县| 晋宁县| 肃南| 峨眉山市| 内江市|