public function index($page){
set_time_limit(0);
ignore_user_abort();
//原网站有多少页数据这里就写多少
if ($page > 41) {
echo "全部执行完毕";die;
}
echo "正在执行第 $page 条数据";
//原网站的地址
$url ="https://www.donghetea.com/quotes.php?id=36&price_min=0&price_max=0&page=".$page."&sort=sort_order&order=desc";
$str = file_get_contents($url);
//将文件保存到txt中
// $time = date('YmdHis');
// file_put_contents("./log".$time.".html",$str);
//将文件读取出来
$reg="/<li class=\"quotes_list\".*?>.*?<\/li>/ism";
$aarray = ''; //这个存放的就是正则匹配出来的所有《li》标签数组
preg_match_all($reg,$str,$aarray);
//拿出《a》标签中的链接和标签内容
$reg1="/<span class=\"dh1\".*?>.*?<\/span>/ism";
$reg2="/<span class=\"dh2\".*?>.*?<\/span>/ism";
$reg3="/<span class=\"dh3\".*?>.*?<\/span>/ism";
$reg4="/<span class=\"dh4\".*?>.*?<\/span>/ism";
$reg5="/<span class=\"dh5\".*?>.*?<\/span>/ism";
$reg6="/<span class=\"dh6\".*?>.*?<\/span>/ism";
$reg7="/<span class=\"dh7\".*?>.*?<\/span>/ism";
for($i=0;$i<count($aarray[0]);$i++){
//你需要的字段
$name = '';
$price = '';
$up = '';
$down = '';
$year = '';
$updated_at = '';
$score = '';
//名称
preg_match_all($reg1,$aarray[0][$i],$name);
$inser1['name'] = strip_tags($name[0][0]);
//参考价
preg_match_all($reg2,$aarray[0][$i],$price);
$inser1['price'] = strip_tags($price[0][0]);
$inser1['price'] = ltrim ($inser1['price'],'¥');
if(!is_numeric($inser1['price'][-1])){
$new =substr($inser1['price'], 0, -1) ;
$new = intval($new)*10000;
$inser1['price'] = $new;
}
//更新日期
preg_match_all($reg6,$aarray[0][$i],$updated_at);
$inser1['updated_at'] = strip_tags($updated_at[0][0]);
//升跌幅度
preg_match_all($reg3,$aarray[0][$i],$up);
$inser1['up'] = strip_tags($up[0][0]);
//升降百分比
preg_match_all($reg4,$aarray[0][$i],$down);
$inser1['down'] = strip_tags($down[0][0]);
//年份
preg_match_all($reg5,$aarray[0][$i],$year);
$inser1['year'] = strip_tags($year[0][0]);
//综合评分
preg_match_all($reg7,$aarray[0][$i],$score);
//存入数据库的内容
$inser1['score'] = trim($score[0][0]);
$inser1['brand'] = rand(1,6);
$inser1['seckil_type'] = rand(1,5);
$inser1['created_at'] = date('Y-m-d H:i:s');
$inser1['specifications'] = "357克/片 7片/提";
$inser1['technology'] = "生茶";
//判断是否存在此条茶品的数据
$re = Db::table('dock_seckill_price')->where(['name'=>$inser1['name']])->find();
//不存在向数据中添加
if(!$re){
//将数据保存到数据表中
Db::table('dock_seckill_price')->insertGetId($inser1);
}
//存在此条信息则修改此条信息的数据
Db::table('dock_seckill_price')->where(['name'=>$inser1['name']])->update($inser1);
continue;
}
//重定向进入到茶品价格首页中去
$this->success("执行完毕,正在前往下一条数据",url('Onload/index',['page'=>$page+1]));
}
tp5做网站数据爬虫
于 2022-02-25 11:12:53 首次发布