亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

3種PHP實現數據采集的方法

2020-03-22 18:48:15
字體:
來源:轉載
供稿:網友
什么叫采集?就是使用PHP程序,把其他網站中的信息抓取到我們自己的數據庫中、網站中。本文主要和大家分享的是3種PHP實現數據采集的方法,希望能幫助到大家。

PHP制作采集的技術:

從底層的socket到高層的文件操作函數,一共有3種方法可以實現采集。

1. 使用socket技術采集:

socket采集是最底層的,它只是建立了一個長連接,然后我們要自己構造http協議字符串去發送請求。

  1. <?php  //連接,$error錯誤編號,$errstr錯誤的字符串,30s是連接超時時間$fp=fsockopen("www.youku.com",80,$errno,$errstr,30);  if(!$fp) die("連接失敗".$errstr);  //構造http協議字符串,因為socket編程是最底層的,它還沒有使用http協議$http="GET /?spm=a2hww.20023042.topNav.5~1~3!2~A HTTP/1.1/r/n";   //  /r/n表示前面的是一個命令$http.="Host:www.youku.com/r/n";  //請求的主機$http.="Connection:close/r/n/r/n";   // 連接關閉,最后一行要兩個/r/n//發送這個字符串到服務器fwrite($fp,$http,strlen($http));  //接收服務器返回的數據$data='';  while (!feof($fp)) {  $data.=fread($fp,4096);  //fread讀取返回的數據,一次讀取4096字節}  //關閉連接fclose($fp);  var_dump($data);  ?>

打印出的結果如下,包含了返回的頭信息及頁面的源碼:

2. 使用curl_一套函數

curl把HTTP協議都封裝成了很多函數,直接傳相應參數即可,降低了編寫HTTP協議字符串的難度。

前提:在php.ini中要開啟curl擴展。

  1. //生成一個curl對象$curl=curl_init();  //設置URL和相應的選項curl_setopt($curl, CURLOPT_URL, "http://www.youku.com");  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  //將curl_exec()獲取的信息以字符串返回,而不是直接輸出。//執行curl操作$data=curl_exec($curl);  var_dump($data);

打印出的結果如下,只包含頁面的源碼:

3. 直接使用file_get_contents(最頂層的)

前提:在php.ini中設置允許打開一個網絡的url地址。

[php] view plain copy

  1. //使用file_get_contents()$data=file_get_contents("http://www.youku.com");  var_dump($data);


3種方式的選擇

網絡之間通信主要使用的是以上三種。其中后兩種用的較多:如果要批量采集大量的數據時使用第二種【CURL】,性能好、穩定。

偶爾發幾個請求發的頻繁不密集時使用第三種。

擴展:圖片的防盜鏈如何破?

比如7060網站上的圖片做了防盜鏈:在他的網站中可以看到圖片,把圖片拿到站外就無法訪問。

原理:在HTTP協議中有一個referer項,代表發這個請求的來源地址,服務器會判斷如果這個請求不是這個網站發來的就會過濾掉這個請求:

解決辦法:發HTTP時自己模擬referer即可:

擴展:有些要采集數據時時必須先登錄,可以使用模擬的試模擬在登錄狀態下的采集:

a. 先用瀏覽登錄一下,登錄完,瀏覽器的COOKIE中就會有SESSIONID

b. 發PHP發HTTP協議時,把瀏覽器中的SESSIONID放到PHP的HTTP協議請求里,這樣就在以登錄的狀態發請求。

總結:所有客戶端發過來的數據都可以被模擬,所以服務器上的程序必須要必要的地方過濾客戶端的數據。

什么時候用以上東西?接口開發時、采集時。

二、數據采集

例如我要采集這個url里的所有美國電影的信息,

則先要知道電影所在的節點的結構,我們使用firebug查看。

然后開始寫代碼:完整代碼如下

  1. /** * 發一個GET請求獲取數據 */function get($url)  {     global $curl;     // 配置curl中的http協議->可配置的薦可以查PHP手冊中的curl_   curl_setopt($curl, CURLOPT_URL, $url);     curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);     curl_setopt($curl, CURLOPT_HEADER, FALSE);     // 執行這個請求   return curl_exec($curl);  }  // 生成一個curl對象$curl = curl_init();  $url='http://list.youku.com/category/show/c_96_a_%E7%BE%8E%E5%9B%BD_s_1_d_1_p_3.html';  $data=get($url);  // 匹配電影所在位置$list_preg = '/<li class="yk-col4 mr1">.+<//li>/Us';  // 匹配img標簽上的src和alt$img_preg = '/<img class="quic" _src="(.*)" src="(.*)" alt="(.*)" //>/U';  //匹配電影的url$video_preg='/<a href="(.*)" title="(.*)" target="(.*)"><//a>/U';  //把所有的li存到$list里,$list是個二維數組preg_match_all($list_preg,$data,$list);     //var_dump($list);foreach ($list[0] as $k => $v) {   //這里$v就是每一個li標簽/* 獲取圖片及電影名稱    preg_match($img_preg,$v,$img);  //把匹配到的圖片的信息存到$img里    var_dump($img);    */    /*獲取電影地址    preg_match($video_preg,$v,$video);  //把匹配到的電影的信息存到$video里    var_dump($video);*/    preg_match($img_preg,$v,$img);      preg_match($video_preg,$v,$video);      echo $img[0].'<a href="'.$video[1].'">'.$video[2].'</a>';  }

測試:

打印$list;

打印$img

打印$video

最終效果:

如果需要把圖片拷貝到硬盤上,則在foreach循環里加上以下代碼:

  1. $imgData = get($img[1]);     // 把圖片文件寫到硬盤上【下載】   // 因為操作系統是GBK的,所以要把UTF8轉成GBK   is_dir('./youkuimg/') ? '': mkdir('./youkuimg/');  file_put_contents('./youkuimg/'.mb_convert_encoding($img[3], 'gbk', 'utf-8').'.jpg', $imgData);


效果如下:在當前目錄下的youkuimg目錄下就會有下載好的圖片。


相關推薦:

php獲取(curl) 帶有cookie的網頁數據采集方法

php 一個數據采集類實例代碼

PHP實現數據采集的三種方法

以上就是3種PHP實現數據采集的方法的詳細內容,更多請關注 其它相關文章!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人伊人精品色xxxx视频| 在线午夜精品自拍| 亚洲乱码av中文一区二区| 国产在线精品成人一区二区三区| 亚洲精品女av网站| 日韩性生活视频| 欧美日韩午夜视频在线观看| 亚洲精品在线看| 精品在线观看国产| 亚洲福利在线视频| 91亚洲国产成人精品性色| 色噜噜狠狠色综合网图区| 青草青草久热精品视频在线网站| 亚洲第一视频网站| 国产精品免费久久久久影院| 欧美成人精品一区| 亚洲国模精品私拍| 国产精品视频午夜| 日韩av在线网页| 97视频免费在线看| 国产伦精品一区二区三区精品视频| 欧美中文字幕在线| 国产偷亚洲偷欧美偷精品| 国产中文字幕日韩| 精品视频偷偷看在线观看| 国产日韩欧美黄色| 国产精品777| 日韩欧美精品免费在线| 国产亚洲欧美另类中文| 久久天堂电影网| 成人黄色中文字幕| 久久免费视频在线观看| 成人黄色片在线| 国产视频精品免费播放| 国产精品久久久久999| 亚洲第一网站男人都懂| 国产精品第1页| 日韩精品在线电影| 国产91网红主播在线观看| 热re99久久精品国产66热| 亚洲色图15p| 亚洲女在线观看| 国产精品免费在线免费| 亚洲精品少妇网址| 一区二区在线视频| 97精品国产aⅴ7777| 国产成人激情视频| 91美女片黄在线观看游戏| 久久精品男人天堂| 97色在线播放视频| 亚洲伊人成综合成人网| 国产精品久久久久7777婷婷| 97在线免费观看视频| 久久国产精品影片| 亚洲欧洲国产一区| 久久久精品一区| 国产成人亚洲综合91精品| 亚洲视频在线播放| 久久久久女教师免费一区| 97久久精品国产| 国产精品亚洲片夜色在线| 亚洲男人天堂手机在线| 日韩在线免费视频观看| 欧美肥臀大乳一区二区免费视频| 日韩在线视频免费观看高清中文| 亚洲国产精品va在线看黑人动漫| 成人久久一区二区三区| 欧美午夜xxx| 中文字幕亚洲字幕| 欧美激情在线有限公司| 少妇高潮久久久久久潘金莲| 亚洲色图日韩av| 久久精品国产99国产精品澳门| 亚洲欧美一区二区三区情侣bbw| 欧美第一淫aaasss性| 欧美亚洲午夜视频在线观看| 国产精品91视频| 欧美激情精品久久久| 人人做人人澡人人爽欧美| 人体精品一二三区| 国产一区二区丝袜| 亚洲精品第一国产综合精品| 青青草精品毛片| www欧美日韩| 精品久久国产精品| 色噜噜狠狠狠综合曰曰曰88av| 欧美天天综合色影久久精品| 欧美日韩一区二区在线播放| 亚洲精选在线观看| 国产成人中文字幕| 亚洲色图在线观看| 综合欧美国产视频二区| 日韩精品中文字幕在线观看| 亚洲www永久成人夜色| 久久久久久中文| 亚洲精品在线91| 久久天天躁狠狠躁夜夜爽蜜月| 欧美日韩国产精品一区二区不卡中文| 欧美极品少妇xxxxⅹ裸体艺术| 欧美亚洲免费电影| 亚洲国产美女精品久久久久∴| 中国china体内裑精亚洲片| 欧美国产日本在线| 欧美日韩免费看| 日韩高清欧美高清| 伦伦影院午夜日韩欧美限制| 九九视频直播综合网| 精品一区二区三区电影| 国产精品美女网站| 美日韩在线视频| 亚洲精品99久久久久| 亚洲欧美综合v| 91精品国产91久久久久久| 亚洲自拍小视频免费观看| 欧美性猛交xxxx黑人猛交| 久久夜色精品国产亚洲aⅴ| 国产69精品久久久久久| 欧美成人激情视频免费观看| 国产999在线| 亚洲一区二区三| 久久精品99久久香蕉国产色戒| 欧美成人网在线| 亚洲小视频在线观看| 国产精品永久免费在线| 国产美女被下药99| 精品久久久香蕉免费精品视频| 91av在线不卡| 久久久久久久久久久亚洲| 亚洲天堂男人的天堂| 亚洲精品日韩av| 国产亚洲精品一区二区| 欧美在线视频免费播放| 欧美性生交xxxxx久久久| 久久不射热爱视频精品| 欧美中文在线视频| 5252色成人免费视频| 在线观看精品国产视频| 国产丝袜高跟一区| 欧美精品午夜视频| 欧美亚洲国产日本| 色综合亚洲精品激情狠狠| 欧美性极品xxxx娇小| 亚洲第一页中文字幕| 亚洲视频视频在线| 久久夜色精品国产| 国产精品福利久久久| 国产精品日韩欧美| 日韩美女在线观看一区| 久久久久久久久电影| 亚洲欧美国产精品久久久久久久| 2025国产精品视频| 亚洲美女视频网| 日韩精品有码在线观看| 在线观看欧美日韩| 国产热re99久久6国产精品| 欧美大尺度电影在线观看| 国产精品伦子伦免费视频| 日韩中文字幕在线免费观看| 国产欧美精品xxxx另类| 欧美性20hd另类| 亚洲人成在线观| 亚洲视频在线观看视频| 国产精品亚洲片夜色在线| 欧美乱大交xxxxx另类电影|