PHP脚本扮演爬虫的角色,可能大家第一时间想到可能会是会正则,个人对正则的规则老是记不住,表示比较难下手,今天工作中有个需求需要爬取某个网站上的一些门店信息
无意间在网上看到一个比较好的类库叫:simple_html_dom
github下载地址:https://github.com/samacs/simple_html_dom
 
最重要的一步:你得先了解别人网站的结构,知道从哪个tab开始是你想要的数据
 
下面演示下过程吧
 
实现过程我分了三步
1、将门店信息的经纬度,名称等一些重要信息先插入本地表
 
- set_time_limit(0);  
- $host = ‘127.0.0.1‘;  
- $user = ‘root‘;  
- $user_pwd = ‘‘;  
- $database = ‘dataname‘;  
- $conn = mysql_connect($host,$user,$user_pwd) or die(‘sss‘);  
- mysql_select_db($database,$conn) or die(‘dddd‘);  
- mysql_query(‘set names utf8‘);  
-   
-   
- include(‘./simple_html_dom-master/simple_html_dom.php‘);  
-   
- $url = ‘需要爬取的网站URL‘;  
- $html = file_get_html($url);  
- $n = 1;  
- foreach($html->find(‘li[data-counts=0]‘) as $e){  
-     $storeid = $e->storeid;  
-     $star = $e->level.‘.0‘;  
-     $work_time = $e->time;  
-     $mapx = $e->mapx;  
-     $mapy = $e->mapy;  
-     $nickname = $e->mapname;  
-     $mapadd = $e->mapadd;  
-     $maptel = $e->maptel;  
-     $time = date(‘Y-m-d H:i:s‘);  
-     $query = "INSERT INTO `store` (`storeid`,`star`,`work_time`,`longitude`,`latitude`,`create_time`,`nickname`,`address`,`tel`)  
-               VALUES ($storeid,‘".$star."‘,‘".$work_time."‘,‘".$mapx."‘,‘".$mapy."‘,‘".$time."‘,‘".$nickname."‘,‘".$mapadd."‘,‘".$maptel."‘)";  
-     $res = mysql_query($query);  
-     
-   
-     if($res){  
-         echo ‘成功导入第‘.$n.‘个门店<br>‘;  
-         $n++;  
-     }else{  
-         die(‘失败<br>‘);  
-     }  
- }  
 
 
2、跳入站点的另一个页面获取门店LOGO图片
 
- $query = "SELECT storeid FROM store order by id desc";  
-   
- $row = mysql_query($query);  
-   
- while($rows = mysql_fetch_array($row)){  
-     $url = ‘http://别人站点域名/‘.$rows[‘storeid‘].‘.jhtml‘;  
-     $html = file_get_html($url);  
-     foreach($html->find(‘div.onlyOnePic‘) as $e){  
-         
-         $img =  $e->firstChild()->src;  
-         
-         $content = file_get_contents($img);  
-         file_put_contents(‘./store/‘.$rows[‘storeid‘].‘.jpeg‘, $content);  
-     }  
- }  
 
 
3、更新表中对应门店的LOGO字段
 
- $query = "SELECT storeid FROM store order by id desc";  
- $row = mysql_query($query);  
- $n = 1;  
- while($rows = mysql_fetch_array($row)){  
-     $img = "https://我自己站点域名/".$rows[‘storeid‘].".jpeg";  
-     $sql = "UPDATE store set img_url=‘".$img."‘ where storeid=".$rows[‘storeid‘];  
-     $res = mysql_query($sql);  
-     if($res){  
-         echo ‘成功更新第‘.$n.‘个门店<br>‘;  
-         $n++;  
-     }else{  
-         echo ‘失败‘;  
-     }  
- }  
 
OK,功能实现了,不过还没有更深入的了解这个类库的其他功能,这里也只是做个记录,方便以后需要的时候用
php利用simple_html_dom类,获取页面内容,充当爬虫角色
原文:http://www.cnblogs.com/chenjian/p/7371327.html