php每天扒取当天新闻_php 抓取新浪新闻的程序代码

Jquery中文网 >

脚本编程  >

php  >

正文 php 抓取新浪新闻的程序代码

php 抓取新浪新闻的程序代码

发布时间:2016-10-09   编辑:www.jquerycn.cn

jquery中文网为您提供php 抓取新浪新闻的程序代码等资源,欢迎您收藏本站,我们将为您提供最新的php 抓取新浪新闻的程序代码资源

抓取就是采集了,今天因为我们要做一个实时采集新浪新闻的功能,下面整理了一个非常了得的php 抓取新浪新闻的程序,我们来看看。

首先,需要下载一个simple_html_dom第三方扩展库,具体下载方式和使用详情可以查看:simple_html_dom的使用.

需要环境支持file_get_contents()函数和curl的支持,具体代码如下:

<?php      function timingimg($url,$dirname,$interval){      ignore_user_abort(); //浏览器关闭,程序继续执行      set_time_limit(0);//忽略到默认30秒超时      $interval = empty($interval)?3600:$interval;      $dirname = empty($dirname)?'news/':$dirname;      if(empty($url)){        die('请输入目标网址!!!');      }      do{        $arr = loadimg($url,$dirname);     return $arr;    //返回抓取内容所保存的路径     sleep($interval);     die;      }while(true);    }              /**    *获取所有新闻链接    *参数 $url  新闻列表地址    *参数 $dirname 新闻图片保存路径    * 返回 二维数组  所有新闻记录    */    function loadimg($url,$dirname){       set_time_limit(0);      include_once('simple_html_dom.php');      $ch = curl_init();      curl_setopt($ch,CURLOPT_URL,$url);      curl_setopt($ch,CURLOPT_HEADER,false);      curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);      $output = curl_exec($ch);      curl_close($ch);      $html = new simple_html_dom();      $html->load($output);      $images = array();      $arr = array();      foreach($html->find('li  a') as $element){             if( preg_match('#^http:\/\/tech\.sina\.com\.cn\/it\/[\d]{4}\-[\d]{1,2}\-[\d]{1,2}\/[\d] \.shtml$#i',$element->href)){       array_push($images,$element->href);      }     }      $images = array_unique($images);            sort($images);      for($i=0;$i<10;$i  ){  //只抓取10条记录       $arr[] = getcontent($images[$i],$dirname);     }      return $arr;     }         /**    *    *    * 抓取单个新闻内容    *参数  $url 新闻页面地址    *参数  $dirname 图片保存路径    *返回 一个新闻记录 一维数组    */    function getcontent($url,$dirname){     include_once('simple_html_dom.php');     $html = new simple_html_dom();     $data = file_get_contents($url);     $html->load($data);          $arr = array();        foreach($html->find('h1#artibodyTitle') as $element){        $arr['title']= @iconv('gbk','utf-8', $element->innertext);    ;       }       $str = '';       foreach($html->find('div#artibody p') as $element){        $str.= $element;             }       $arr['content'] = $str;       foreach($html->find('div.img_wrapper img') as $element){          $arr['alt'] =$element->alt;          $data = file_get_contents($element->src);          $info = getimagesize($element->src);//get image information          switch($info[2]){            case 1:           $str = 'gif';           break;            case 2:           $str = 'jpg';           break;            case 3:           $str = 'png';           break;            default:           continue;           break;          }          $filename = time().rand(1,999999).'.'.$str;           if(!is_dir($dirname)){            mkdir($dirname,0777,true);          }          $fp = fopen($dirname.$filename,'w');                      fwrite($fp,$data);          fclose($fp);          $arr['img'] = $dirname.$filename;                  }       return $arr;    }    ?>

如果大家有更好的建议,欢迎提出来

[关闭]

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值