页面抓取数据并添加入库

        页面抓取,我只用过两种,一种是file_get_contents,直接从网页上拿数据,但是有些网站会把这个函数禁了,所以还有一种方法,Curl。

        我们必须先将该页面的数据获取过来,这时候就要用到file_get_contents这个函数,先获取页面的所有数据:

 $url = 'https://blog.csdn.net/zph1234/rss/list';  

 $file=file_get_contents("compress.zlib://".$url);

    页面抓取的时候可能会出现乱码的现象,所以第二行代码中 的 compress.zlib 非常关键,因为获取的头部信息中有Encoding: gzip说明内容是GZIP压缩的



    接下来我写了一个规则,用以匹配页面中的元素,从而实现抓取页面的数据:

 $preg='#<item>.*</item>#isU'; 
 preg_match_all($preg,$file,$arr); 
    preg_match_all 这个函数用于执行一个全局正则表达式匹配 ,会将我需要的数据筛选出来,我要扒去的数据是我的老师的博客,内容有标题,内容,时间,阅读量等,所以我们要一一循环获取
        代码如下
$pat1='#<title>(.*)</title>#isU';
 $pat2='#阅读:([1-9]\d*+).*</description>#isU'; 
 $pat3='#<pubDate>(.*)</pubDate>#isU'; 
 $pat4='#<link>(.*)</link>#isU'; 

 	 foreach ($arr as $key => $v) 
 	 { //二维数组[2]对应id和[1]刚好一样,利用起key
        foreach($v as $k => $value) 
        {
			preg_match($pat1, $v[$k], $arr_title);
			preg_match($pat2, $v[$k], $arr_con);
			preg_match($pat3, $v[$k], $arr_time);
			preg_match($pat4, $v[$k], $arr_url);
			$arr2['title'][]  = addslashes( htmlspecialchars ($arr_title[1]));
			$arr2['content'][] = addslashes( htmlspecialchars ($arr_con[1]));
		    $arr2['ctime'][] = $arr_time[1];
			$arr2['url'][] = $arr_url[1];
        }
        // var_dump($arr2);exit;
    }

将这些数据处理成我想要的数组,实现代码如下:

 foreach ($arr2 as $key => $val) 
         {
         	foreach ($val as $k => $v) 
         	{
                $arr_new[$k][$key]=$v;   
         	}
         }

    将处理后的数组循环添加到数据库中就可以了;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值