`
musicdu
  • 浏览: 6081 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
社区版块
存档分类
最新评论

PHP抓新闻

    博客分类:
  • PHP
阅读更多
这是很久以前写的一个抓新浪新闻的东西了,目的是为了方便学校同学不花钱上内网看时事新闻。我是从新浪rss先抓取内容html网址,再进一步匹配标题,正文,图片……
今天又对代码做了点小改动:
//检查是否实视频,是视频则不抓取
if(strpos($title[1],"视频",0)!==false){//以前写的是!=
echo "不抓取视频!";
return false;
}
!==和!=,===和==他们的区别主要就是在判断值是否相等的同时,还要判断两者的类型。以前看书的时候看过,不过到还没真正应用到过自己的代码里面。
http://www.stuhome.net/readnews/   这就是我以前写的那个抓新闻板块。


<?php
require_once(dirname(__FILE__)."/../global.php");
//抓取网页内容
set_time_limit(0);

$line = file_get_contents("http://rss.sina.com.cn/sports/basketball/nba.xml"); 
$line = strstr( $line, "<item>");

$line=explode("</item>",$line);

$count=count($line);
for($i=0;$i<$count;$i++){
	eregi ("<pubDate>(.*)</pubDate>",$line[$i],$time);
	//取得链结
	if (eregi ("<link>(.*)</link>",$line[$i],$out)) { 
		$news = file_get_contents("$out[1]");
		if(eregi ("<h1>(.*)</h1>",$news,$title)){		//匹配标题
			preg_replace("/ /","",$title[1]);		//去除标题中的空格
			$title[1] = trim($title[1]);
			$title[1]=strip_tags($title[1]);					//去除标题中的的HTML标记
			//$title[1] = addslashes($title[1]);

			//检查是否实视频,是视频则不抓取
			if(strpos($title[1],"视频",0)!==flase){
				echo "不抓取视频!";
				//exit;
				return false;
			}
			echo $title[1];
			echo "<br>";
		}else{
			$title[1]="";
		}
		
		$dt=getdate();
		$hours=$dt[hours];
		$publish_time=$dt[year]."-".$dt[mon]."-".$dt[mday]."-".$hours."-".$dt[minutes]."-".$dt[seconds];
		if($title[1]!=""){
			$sql_title="select title from news where title='$title[1]'";
			$result=$DB->fetch_one_array($sql_title);
			if(empty($result)){

				//取出正文部分
				$news = strstr($news,"<!--正文内容开始-->");
				$news = explode("<!--正文内容结束-->", $news);



				//匹配正文内容
				if(eregi ("<p>(.*)</p>",$news[0],$content)){
					echo $content[1];
					echo "<br>";
				}else{
					$content[1]="";
				}


				//匹配图片路径
				$picture_name="";
				$img="";
				$news=explode("border",$news[0]);
				for($j=0;$j<count($news);$j++){
					if(preg_match("/http:\/\/i(.*)\.(jpeg|png|jpg)/i",$news[$j],$picture)){
						$img[$j]=GrabImage($picture[0],""); 
							
						if($img[$j]){
							$imgpath[$j]=dirname(__FILE__)."/pictures/".$img[$j]; 
							echo '<pre><img src='.$imgpath[$j].'></pre>'; 
						}else{
							$img[$j]="";
						}
					}else{
						$picture[0]="";
						$img[$j]="";
					}
					$picture_name.=$img[$j];
				}

			}	
		}
	}
}

?>


<?php
// Function: 获取远程图片并把它保存到本地
// $url 是远程图片的完整URL地址,不能为空。
// $filename 是可选变量: 如果为空,本地文件名将基于时间和日期自动生成.
function GrabImage($url,$filename="") { 
	if($url==""){
		return false;
	}
	if($filename=="") { 
		$ext=strrchr($url,"."); 
		$temext = strrchr(strtolower($url),"."); 
		if($temext!=".jpg"&$temext!=".jpeg"){
			return false;
		}
		$filename=date("dMYHis").$ext;
		$filepath=dirname(__FILE__)."/pictures/".$filename; 
	} 

	ob_start(); 
	readfile($url); 
	$img = ob_get_contents(); 
	ob_end_clean(); 
	$size = strlen($img); 

	$fp2=fopen($filepath, "a"); 
	fwrite($fp2,$img); 
	fclose($fp2); 

	return $filename; 
} 
?>
分享到:
评论
1 楼 imjl 2008-07-26  
file_get_contents,,,汗,,很少抓把,抓得范围也不广,,否则就不会用这个了。

相关推荐

    新闻php+phpmysql

    新闻php代码,使用php环境加phpmysql写的,仅供初学者

    PHP实例之新闻发布系统源码下载

    PHP实例之新闻发布系统 Create TABLE `news` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `p_time` DATETIME NOT NULL , `title` VARCHAR( 80 ) NOT NULL , `detail` TEXT NOT NULL ) TYPE = innodb; ...

    php案例 之php新闻博客系统

    (2)在修改之后,在浏览器地址栏中输入http://localhost/cms/install.php即可配置新闻网站; (3)配置完成之后必须将install.sql和install.php文件修改为--install.sql和--install.php. (4)配置完成之后,在地址栏...

    php+mysql新闻发布管理系统

    php+mysql新闻发布管理系统

    phpweb抓包教程

    phpweb抓包教程

    php100新闻发布系统源码

    php100新闻发布系统源码,我找了很久才找到,欢迎大家下载

    php简单新闻发布管理

    php简单新闻发布管理,文章发布,修改,删除功能。php简单新闻发布管理

    php+mysql 新闻发布系统

    使用php+mysql 的新闻发布系统,实现了前台新闻的查看,新闻的分类,后台对分类以及新闻的管理。

    php新闻网站系统源码.zip

    php新闻网站系统源码php新闻网站系统源码php新闻网站系统源码php新闻网站系统源码php新闻网站系统源码php新闻网站系统源码php新闻网站系统源码php新闻网站系统源码php新闻网站系统源码php新闻网站系统源码php新闻...

    PHP100_PHPnew新闻系统

    PHP100_PHPnew新闻系统,适合初学者典型学习的例子,里面有smarty模版引擎,已经封装mysql类和分页类!!!

    新闻博客系统php源码

    (2)在修改之后,在浏览器地址栏中输入http://localhost/cms/install.php即可配置新闻网站; (3)配置完成之后必须将install.sql和install.php文件修改为--install.sql和--install.php. (4)配置完成之后,在地址栏...

    php新闻管理系统(简单).rar

    php新闻管理系统(简单).rar

    简单的php新闻程序

    php新闻程序简单的php新闻程序分享php新闻程序简单的php新闻程序分享

    PHP+MySQL新闻发布系统

    2、 登录成功后跳转到主页面(新闻维护页面),主页面中能够显示所有新闻列表(删除的新闻不显示)。 列表中一页显示5条记录,列表下有分页信息(即:上一页,下一页,首页尾页等类似功能) 3、 新闻发布页面: ...

    php+mysql实现简单的新闻发布系统

    使用php、mysql、ajax、json、ueditor等技术和组件实现新闻发布系统的新闻类型、新闻信息、管理员信息等的管理和维护,适合初学者入门学习和课程设计参考练习

    基于PHP的新闻发布系统设计与实现

    毕业设计 基于PHP的新闻发布系统分析与设计

    PHPWEB新闻网站

    用PHP编写的一个新闻类网站,网站系统主机环境要求: PHP4.3-5.2.x MYSQL4.1-5.0.x zend optimizer 3.2以上

    PHP新闻发布系统源码

    PHP新闻发布系统源码 PHP新闻发布系统源码

    php100新闻代码

    php100中的对新闻系统的开发全部代码和数据库代码,包括新闻查看分页等功能。

    php 新闻发布系统

    php 新闻发布 分享 初级 数据库

Global site tag (gtag.js) - Google Analytics