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

这篇博客介绍了如何使用PHP的simple_html_dom类来作为爬虫工具,抓取特定网站上的门店信息,包括经纬度、名称等关键数据,并分步骤讲解了数据存储和获取门店LOGO图片的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);
    //echo $query;exit();

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值