1. 程式人生 > >php利用simple_html_dom類,獲取頁面內容,充當爬蟲角色

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

contents names mac tro upd tool one mit 一個

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. include(‘./simple_html_dom-master/simple_html_dom.php‘);
  10. $url = ‘需要爬取的網站URL‘;
  11. $html = file_get_html($url);
  12. $n = 1;
  13. foreach($html->find(‘li[data-counts=0]‘) as $e){
  14. $storeid = $e->storeid;
  15. $star = $e->level.‘.0‘;
  16. $work_time = $e->time;
  17. $mapx = $e->mapx;
  18. $mapy = $e->mapy;
  19. $nickname = $e->mapname;
  20. $mapadd = $e->mapadd;
  21. $maptel = $e->maptel;
  22. $time = date(‘Y-m-d H:i:s‘);
  23. $query = "INSERT INTO `store` (`storeid`,`star`,`work_time`,`longitude`,`latitude`,`create_time`,`nickname`,`address`,`tel`)
  24. VALUES ($storeid,‘".$star."‘,‘".$work_time."‘,‘".$mapx."‘,‘".$mapy."‘,‘".$time."‘,‘".$nickname."‘,‘".$mapadd."‘,‘".$maptel."‘)";
  25. $res = mysql_query($query);
  26. //echo $query;exit();
  27. if($res){
  28. echo ‘成功導入第‘.$n.‘個門店<br>‘;
  29. $n++;
  30. }else{
  31. die(‘失敗<br>‘);
  32. }
  33. }

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

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

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類,獲取頁面內容,充當爬蟲角色