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,功能实现了,不过还没有更深入的了解这个类库的其他功能,这里也只是做个记录,方便以后需要的时候用
无意间在网上看到一个比较好的类库叫: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,功能实现了,不过还没有更深入的了解这个类库的其他功能,这里也只是做个记录,方便以后需要的时候用
相关文章推荐
- php利用simple_html_dom类,获取页面内容,充当爬虫角色
- 利用webBrowser获取框架内Html页面内容
- 利用webBrowser获取框架内Html页面内容
- 利用webBrowser获取框架内Html页面内容
- 利用webBrowser获取框架内Html页面内容
- PHP爬虫抓取网页内容 (simple_html_dom.php)
- 利用webBrowser获取框架内Html页面内容
- php获取网页标题和内容函数(不包含html标签)
- php+js+html+ajax获取页面数据
- php爬虫页面信息获取利器
- 利用webBrowser获取页面iframe中的内容
- 获取前端网页 php爬虫 get_html.php
- php解析html类库simple_html_dom(爬虫相关)
- 页面爬虫(获取其他页面HTML)加载到自己页面
- php抓取页面simple_html_dom的使用教程
- 获取WebView加载HTML时网页中的内容 获取页面元素
- php 获取页面中的指定内容类
- JS实现获取word文档内容并输出显示到html页面示例
- PHP中获取html页面传值
- C# webBrowser 获取框架内Html页面内容