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 = emptyempty($interval) ? 3600 : $interval; $dirname = emptyempty($dirname) ? 'news/' : $dirname; if (emptyempty($url)) { die('请输入目标网址!!!'); } do { $arr = loadimg($url, $dirname); return $arr; //返回抓取内容所保存的路径 sleep($interval); die; } while (true); } /** *获取所有新闻链接 *参数 $url 新闻列表地址 *参数 $dirname 新闻图片保存路径 * 返回 二维数组 所有新闻记录 */ function loadimg($url, $dirname) { set_time_limit(0); < ahref = "/tags.php/include/"target = "_blank" > include < / a > _once('simple_html_dom.php'); $ch = curl_init(); < ahref = "/tags.php/curl_setopt/"target = "_blank" > curl_setopt < / a > ($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(); < ahref = "/tags.php/foreach/"target = "_blank" > foreach < / a > ($html->find('li a') as $element) { if ( < ahref = "/tags.php/preg_match/"target = "_blank" > preg_match < / a > ('#^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'] = @ < ahref = "/tags.php/iconv/"target = "_blank" > iconv < / a > ('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 = < ahref = "/tags.php/fopen/"target = "_blank" > fopen < / a > ($dirname . $filename, 'w'); fwrite($fp, $data); fclose($fp); $arr['img'] = $dirname . $filename; } return $arr; }
永久链接:http://www.phprm.com/develop/fs9220.html
转载随意!带上文章地址吧。