您的位置:首页 > 编程语言 > PHP开发

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

2017-08-16 06:30 731 查看
PHP脚本扮演爬虫的角色,可能大家第一时间想到可能会是会正则,个人对正则的规则老是记不住,表示比较难下手,今天工作中有个需求需要爬取某个网站上的一些门店信息

无意间在网上看到一个比较好的类库叫:simple_html_dom

github下载地址:https://github.com/samacs/simple_html_dom

最重要的一步:你得先了解别人网站的结构,知道从哪个tab开始是你想要的数据

下面演示下过程吧

实现过程我分了三步

1、将门店信息的经纬度,名称等一些重要信息先插入本地表

[php] view plain copy

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图片

[php] view plain copy

$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字段

[php] view plain copy

$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,功能实现了,不过还没有更深入的了解这个类库的其他功能,这里也只是做个记录,方便以后需要的时候用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: