从新闻网站提取新闻列表 ( 积分: 100 )

  • 主题发起人 主题发起人 luckyhou
  • 开始时间 开始时间
L

luckyhou

Unregistered / Unconfirmed
GUEST, unregistred user!
请教各位,如何从新闻网站钟将一些新闻列表提取出来!
 
请教各位,如何从新闻网站钟将一些新闻列表提取出来!
 
小偷程序?
 
1.用iDhttp.get到原代码
2.用正则表达式分析原代码,
3.............
 
to lao li:
能写个Demo么?我读的是新浪
 
我这里有段不记得是哪里得来的php代码
<?php
class ugs
{
var $value_ ; //'搜集到的内容
var $src_ ; //'要搜集的目标URL地址
var $host_ ; // 主机
var $port_ ; // 端口
var $targeturl_ ; // 目标url
var $isGet_ ; //判断是否已经搜集过
var $os_ ; // 判断操作系统 ,本程序可以使用在 window / unix php 4 php 5 环境中

function ugs($hostinfo)
{

$this->os_="unix";
if(eregi("win",$_ENV["OS"])) $this->os_="win";
if(eregi("win",$_ENV["OSTYPE"])) $this->os_="win";

$host=$hostinfo["host"];
$port=$hostinfo["port"];
$targeturl=$hostinfo["targeturl"];

$host=trim($host);
$port=trim($port);
$targeturl =trim($targeturl);
$this->host_=$host;
$this->port_=$port;
$this->targeturl_=$targeturl ;

$this->src_="http://".$host.":".$port.$targeturl;



}



function steal() //'窃取目标URL地址的HTML代码/方法
{

if($this->src_!="")
{
print $this->src_;
print "/n";
$fp = fsockopen($this->host_, $this->port_, $errno, $errstr, 30);
if (!$fp)
{
echo "$errstr ($errno)<br />/n";
} else {
$out = "GET $this->targeturl_ HTTP/1.1/r/n";
$out .= "Host: $this->host_/r/n";
$out .= "Connection: Close/r/n/r/n";
print $out;
fwrite($fp, $out);
while (!feof($fp))
{
$http.=fgets($fp, 128);
}
fclose($fp);

}

$this->value_=$http;


}
else
{

echo ("<script>alert(/"请先设置src属性!/")</script>");
}


}

function noReturn()//'删除搜集到的内容中里面的换行、回车符以便进一步加工/方法
{

if(!$this->isGet_) $this->steal();
$this->value_=str_replace("/n","",$this->value_);
$this->value_=str_replace("/r","",$this->value_);
}

//'对搜集到的内容中的个别字符串用新值更换/方法
function change($oldStr,$str) //'参数分别是旧字符串,新字符串
{
if(!$this->isGet_) $this->steal();
$this->value_=str_replace($oldStr,$str,$this->value_ );
}



//'按指定首尾字符串对搜集的内容进行裁减(不包括首尾字符串)/方法
function cut($head,$bot) //'参数分别是首字符串,尾字符串
{
if(!$this->isGet_) $this->steal();

$message=explode($head,$this->value_);

if(count($message)>1)
{
$message=explode($bot,$message[1]);
return $this->value_= $message[0];
}
else
{
return $this->value_="";
}


}

function cut2($head,$bot) // cut 的另一种实现方法
{
return substr($this->value_,strpos($this->value_,$head)+strlen($head),strpos($this->value_,$bot)-strpos($this->value_,$head)-strlen($head));
}


// 增强版的cut 可以指定获取第n 个 , $comprise 可以使用start ,end , all 来获得加头,尾 或者全部
function cutpro($start,$end,$no='1',$comprise=''){ // $no must in {1,2,3,4,5.....} zero is not support
$string=explode($start,$this->value_);
//print_r($string);
$string=explode($end,$string[$no]);
//print_r($string);
switch ($comprise){
case 'start':
$string=$start.$string[0];
break;
case 'end':
$string=$string[0].$end;
break;
case 'all':
$string=$start.$string[0].$end;
break;
default:
$string=$string[0];
}
return $this->value_=$string;
}


//'按指定首尾字符串对搜集的内容进行裁减(包括首尾字符串)/方法
function cutX($head,$bot) //'参数分别是首字符串,尾字符串
{
$tmp=$this->cut($head,$bot);

return $this->value_=$head.$tmp.$bot;


}


//'按指定首尾字符串位置偏移指针对搜集的内容进行裁减/方法
function cutBy($head,$headCusor,$bot,$botCusor)
//'参数分别是首字符串,首偏移值,尾字符串,尾偏移值,左偏移用负值,偏移指针单位为字符数
{
if(!$this->isGet_) $this->steal();
return substr($this->value_,strpos($this->value_,$head)+strlen($head)+$headCusor,strpos($this->value_,$bot)-1+$botCusor-strpos($this->value_,$head)-strlen($head)-$headcusor);

}


//'按指定首尾字符串对搜集的内容用新值进行替换(不包括首尾字符串)/方法
function filt($head,$bot,$str)// '参数分别是首字符串,尾字符串,新值,新值位空则为过滤
{
if(!$this->isGet_) $this->steal();
$tmp_v=$this->value_;
$tmp=$this->cut($head,$bot);
return $this->value_=str_replace($tmp,$str,$tmp_v);
}

function filtX($head,$bot,$str)// '参数分别是首字符串,尾字符串,新值,新值位空则为过滤
{
if(!$this->isGet_) $this->steal();
$tmp_v=$this->value_;

$tmp=$this->cutX($head,$bot);

return $this->value_=str_replace($tmp,$str,$tmp_v);
}

//'按指定首尾字符串位置偏移指针对搜集的内容新值进行替换/方法
function filtBy($head,$headCusor,$bot,$botCusor,$str)
//'参数分别是首字符串,首偏移值,尾字符串,尾偏移值,新值,左偏移用负值,偏移指针单位为字符数,新值为空则为过滤
{
if(!$this->isGet_) $this->steal();
// 这里写代码
$tmp_v=$this->value_;
$ttt=substr($this->value_ ,strpos($this->value_ ,$head)+strlen($head)+$headCusor,strpos($this->value_ ,$bot)-1+$botCusor-strpos($this->value_ ,$head)-strlen($head)-$headCusor);
//echo $ttt;
return $this->value_=str_replace($ttt,$str,$tmp_v );


}

//'将搜集的内容中的绝对URL地址改为本地相对地址
function local()
{
// 本版中暂时不实现
}


//'对搜集到的内容中的符合正则表达式的字符串用新值进行替换/方法
function replaceByReg($patrn,$str) //'参数是你自定义的正则表达式,新值
{
if(!$this->isGet_) $this->steal();
return $this->value_=join("",preg_replace($patrn,$str,$this->value_));

}

function pickByReg($patrn)
{
//
}

function debug()
{
$tempstr="<SCRIPT>function runEx(){var winEx2 = window.open(/"/", /"winEx2/", /"width=500,height=300,status=yes,menubar=no,scrollbars=yes,resizable=yes/"); winEx2.document.open(/"text/html/", /"replace/"); winEx2.document.write(unescape(event.srcElement.parentElement.children[0].value)); winEx2.document.close(); }function saveFile(){var win=window.open('','','top=10000,left=10000');win.document.write(document.all.asdf.innerText);win.document.execCommand('SaveAs','','javascript.htm');win.close();}</SCRIPT><center><TEXTAREA id=asdf name=textfield rows=32 wrap=VIRTUAL cols=/"120/">".$this->value_."</TEXTAREA><BR><BR><INPUT name=Button onclick=runEx() type=button value=/"查看效果/">  <INPUT name=Button onclick=asdf.select() type=button value=/"全选/">  <INPUT name=Button onclick=/"asdf.value=''/" type=button value=/"清空/">  <INPUT onclick=saveFile(); type=button value=/"保存代码/"></center>";
echo $tempstr;
}






}
?>
 
这里有两篇文章给你参考一下!
http://www.zzdg.net/blog/article.asp?id=90
http://www.zzdg.net/blog/article.asp?id=92
 

Similar threads

回复
0
查看
864
不得闲
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部