|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
说说这一个月左右的学习情况和心得吧!我个人认为,既然决定了去做一件事,那就要以认真的态度去对待!既然决定来学习了,那不管当初是抱着怎样的心态来到这个培训班的,都要让自己认真的投入到学习中。 <?php
/*
百度晓得爬虫!
经由咱们剖析,百度晓得是由静态网页构成。网址格局次要为http://zhidao.百度.com/question/(编号).html,个中编号即是该成绩的编号(PID),依照工夫逐一编号的,因为某些成绩的删除或某种缘由,能够编号不一连。当咱们发明该成绩删除时,可以跳过该成绩持续。
*/
class spider
{
private $content ;
private $contentlen ;
private $BestAnswer ;
private $CurPosition ;
function GetStart( $iStart )
{
return strpos( $this->content , '>' , $iStart )+1 ;
}
function GetContent ( $url )
{
$this->content = file_get_contents($url);
$this->contentlen = strlen( $this->content ) ;
$start = strpos( $this->content , '<title>') ;
$start = $this->GetStart( $start ) ;
$end = strpos( $this->content , '</title>' , $start ) ;
$title = substr( $this->content , $start , $this->$end-$start ) ;
if ( strpos( $title , '_百度晓得' , 1 ) < 1 )
{
return false;
}
return ture ;
}
function GetTitle()
{
$start = strpos( $this->content , '<title>') ;
if ( $start > 0 )
{
$start = $this->GetStart( $start ) ;
$end = strpos( $this->content , '</title>' , $start ) ;
$this->CurPosition = $end ;
return substr( $this->content , $start , $end-$start ) ;
}
return NULL ;
}
function GetQTitle()
{
$start = strpos( $this->content , 'span class="question-title"' , $this->CurPosition ) ;
if ( $start > 0 )
{
$start = $this->GetStart( $start ) ;
$end = strpos( $this->content , '</span>' , $start ) ;
$this->CurPosition = $end ;
return substr( $this->content , $start , $end-$start ) ;
}
return NULL ;
}
function GetClassFly()
{
;
}
function GetQContent()
{
$start = strpos( $this->content , 'pre id="question-content"' , $this->CurPosition ) ;
if ( $start > 0 )
{
$start = $this->GetStart( $start ) ;
$end = strpos( $this->content , '</pre>' , $start ) ;
$this->CurPosition = $end ;
return substr( $this->content , $start , $end-$start ) ;
}
return NULL ;
}
function GetQsuply()
{
$start = strpos( $this->content , 'id="question-suply"' , $this->CurPosition ) ;
if ( $start > 0 )
{
$start = $this->GetStart( $start ) ;
$end = strpos( $this->content , '</pre>' , $start ) ;
$this->CurPosition = $end ;
return substr( $this->content , $start , $end-$start ) ;
}
return NULL ;
}
function GetAnswer()
{
$start = strpos( $this->content , 'class="reply-text mb10"' , $this->CurPosition ) ;
if ( $start > 0 )
{
$start = $this->GetStart( $start ) ;
$end = strpos( $this->content , '</pre>' , $start ) ;
$this->CurPosition = $end ;
return substr( $this->content , $start , $end-$start ) ;
}
return NULL ;
}
}
ini_set('max_execution_time', '0');
$TestSpider = new spider() ;
$Startqid = 1000001 ;
$sndqid = 1000051 ;
$standurl = 'http://zhidao.百度.com/question/' ;
$html = '.html' ;
$url ;
$NoUse = 0 ;
function microtime_float()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
$time_start = microtime_float();
$answer ;
for ($i = $Startqid ; $i < $sndqid ; $i++ )
{
$url = $standurl.$i.$html ;
if ( $TestSpider->GetContent ( $url ) )
{
echo '<br>正在爬取编号为'.$i.'的网页<br>' ;
$TestSpider->GetTitle() ; //失掉网页题目,不必显示了
echo '<font color="green">成绩:</font><font color="red"><a target="_blank" href="'.$url.'"> '.$TestSpider->GetQTitle().'</a></font><br>' ; //失掉成绩标题
echo '<font color="green">成绩详细内容:</font>'.$TestSpider->GetQContent().'</font><br>' ; //失掉成绩内容,有能够不存在
echo '<font color="green">成绩增补申明:</font>'.$TestSpider->GetQsuply().'</font><br>' ; //成绩增补申明,有能够不存在
while ( ($answer = $TestSpider->GetAnswer()) != NULL )
{
echo '<font color="green">成绩谜底:</font>'.$answer.'</font><br>' ; //失掉谜底。有能够没有谜底!
}
ob_flush() ;
flush() ;
}
else
{
echo '<p>毛病了<a target="_blank" href="'.$url.'" style= "color:#ff0000">'.$url.'</a></p>' ;
$NoUse++ ;
}
}
$time_end = microtime_float();
$time = $time_end - $time_start;
$i = $i-$Startqid ;
echo '<p>爬取'.$i.'个网页用时'.$time.'秒</p>个中跳过'.$NoUse.'个有效网页!' ;
?>
在我开始学习PHP以前,我从未想过要做软件工程,即便是在去听过华育国际的关于软件工程的美好前景后,因为我一直都没有想过要与代码打交道,而是想学好所学专业,做个网络工程师或者是网络安全人员。 |
|