• php利用simple_html_dom类,获取页面内容,充当爬虫角色


    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,功能实现了,不过还没有更深入的了解这个类库的其他功能,这里也只是做个记录,方便以后需要的时候用

  • 相关阅读:
    手把手教你爬取PC端『某酷视频』个人历史播放数据,并可视化展示
    python3连接mysql--增删改查
    以『公众号』为例,手把手教你爬取PC端数据
    Flask结合ECharts实现在线可视化效果,超级详细!
    What is Long-Read Sequencing?
    Single molecule real-time (SMRT) sequencing comes of age: applications and utilities for medical diagnostics 单分子实时(SMRT)测序成熟:医学诊断的应用和实用程序
    2020年第10届生物科学,生物化学与生物信息学国际会议(ICBBB 2020)
    ICBCB 2021 第九届生物信息学与计算生物学国际会议-2021年5月25-27日-中国太原
    太原 ICBCB 2020年第八届生物信息学与计算生物学国际会议
    2016年大数据与精准生物医学信息学研讨会 上海
  • 原文地址:https://www.cnblogs.com/chenjian/p/7371327.html
Copyright © 2020-2023  润新知