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
转载随意!带上文章地址吧。