php利用simple_html_dom類,擷取頁面內容,充當爬蟲角色

來源:互聯網
上載者:User

標籤:tle   指令碼   create   沒有   clip   ++   fetch   tab   爬蟲   

PHP指令碼扮演爬蟲的角色,可能大家第一時間想到可能會是會正則,個人對正則的規則老是記不住,表示比較難下手,今天工作中有個需求需要爬取某個網站上的一些門店資訊

無意間在網上看到一個比較好的類庫叫:simple_html_dom

github:https://github.com/samacs/simple_html_dom

 

最重要的一步:你得先瞭解別人網站的結構,知道從哪個tab開始是你想要的資料

 

下面示範下過程吧

 

實現過程我分了三步

1、將門店資訊的經緯度,名稱等一些重要訊息先插入本地表

 

[php] view plain copy 
  1. set_time_limit(0);  
  2. $host = ‘127.0.0.1‘;  
  3. $user = ‘root‘;  
  4. $user_pwd = ‘‘;  
  5. $database = ‘dataname‘;  
  6. $conn = mysql_connect($host,$user,$user_pwd) or die(‘sss‘);  
  7. mysql_select_db($database,$conn) or die(‘dddd‘);  
  8. mysql_query(‘set names utf8‘);  
  9.   
  10.   
  11. include(‘./simple_html_dom-master/simple_html_dom.php‘);  
  12.   
  13. $url = ‘需要爬取的網站URL‘;  
  14. $html = file_get_html($url);  
  15. $n = 1;  
  16. foreach($html->find(‘li[data-counts=0]‘) as $e){  
  17.     $storeid = $e->storeid;  
  18.     $star = $e->level.‘.0‘;  
  19.     $work_time = $e->time;  
  20.     $mapx = $e->mapx;  
  21.     $mapy = $e->mapy;  
  22.     $nickname = $e->mapname;  
  23.     $mapadd = $e->mapadd;  
  24.     $maptel = $e->maptel;  
  25.     $time = date(‘Y-m-d H:i:s‘);  
  26.     $query = "INSERT INTO `store` (`storeid`,`star`,`work_time`,`longitude`,`latitude`,`create_time`,`nickname`,`address`,`tel`)  
  27.               VALUES ($storeid,‘".$star."‘,‘".$work_time."‘,‘".$mapx."‘,‘".$mapy."‘,‘".$time."‘,‘".$nickname."‘,‘".$mapadd."‘,‘".$maptel."‘)";  
  28.     $res = mysql_query($query);  
  29.     //echo $query;exit();  
  30.   
  31.     if($res){  
  32.         echo ‘成功匯入第‘.$n.‘個門店<br>‘;  
  33.         $n++;  
  34.     }else{  
  35.         die(‘失敗<br>‘);  
  36.     }  
  37. }  

 

2、跳入網站的另一個頁面擷取門店LOGO圖片

 

[php] view plain copy 
  1. $query = "SELECT storeid FROM store order by id desc";  
  2.   
  3. $row = mysql_query($query);  
  4.   
  5. while($rows = mysql_fetch_array($row)){  
  6.     $url = ‘http://別人網站網域名稱/‘.$rows[‘storeid‘].‘.jhtml‘;  
  7.     $html = file_get_html($url);  
  8.     foreach($html->find(‘div.onlyOnePic‘) as $e){  
  9.         //擷取img的src屬性  
  10.         $img =  $e->firstChild()->src;  
  11.         //將遠程圖片儲存到本地  
  12.         $content = file_get_contents($img);  
  13.         file_put_contents(‘./store/‘.$rows[‘storeid‘].‘.jpeg‘, $content);  
  14.     }  
  15. }  

 

3、更新表中對應門店的LOGO欄位

 

[php] view plain copy 
  1. $query = "SELECT storeid FROM store order by id desc";  
  2. $row = mysql_query($query);  
  3. $n = 1;  
  4. while($rows = mysql_fetch_array($row)){  
  5.     $img = "https://我自己網站網域名稱/".$rows[‘storeid‘].".jpeg";  
  6.     $sql = "UPDATE store set img_url=‘".$img."‘ where storeid=".$rows[‘storeid‘];  
  7.     $res = mysql_query($sql);  
  8.     if($res){  
  9.         echo ‘成功更新第‘.$n.‘個門店<br>‘;  
  10.         $n++;  
  11.     }else{  
  12.         echo ‘失敗‘;  
  13.     }  
  14. }  


OK,功能實現了,不過還沒有更深入的瞭解這個類庫的其他功能,這裡也只是做個記錄,方便以後需要的時候用

php利用simple_html_dom類,擷取頁面內容,充當爬蟲角色

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.