程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP采集、模擬登陸論壇小程序

PHP采集、模擬登陸論壇小程序

編輯:關於PHP編程

<?php
//    吳燕軍
//   采集程序2cto.com
set_time_limit(0);

//cookie保存目錄
$cookie_jar = /tmp/cookie.tmp;

/*函數 ------------------------------------------------------------------------------------------------------------*/

//模擬請求數據
function request($url,$postfields,$cookie_jar,$referer){
$ch = curl_init();
$options = array(CURLOPT_URL => $url,
      CURLOPT_HEADER => 0,
      CURLOPT_NOBODY => 0,
      CURLOPT_PORT => 80,
      CURLOPT_POST => 1,
      CURLOPT_POSTFIELDS => $postfields,
      CURLOPT_RETURNTRANSFER => 1,
      CURLOPT_FOLLOWLOCATION => 1,
      CURLOPT_COOKIEJAR => $cookie_jar,
      CURLOPT_COOKIEFILE => $cookie_jar,
      CURLOPT_REFERER => $referer
);
curl_setopt_array($ch, $options);
$code = curl_exec($ch);
curl_close($ch);
return $code;
}

// 獲取帖子列表
function getThreadsList($code){
preg_match_all(/ <!--[.|| ]*? <a href="viewthread.php?tid=(d+)/,$code,$threads);
return $threads[1];
}

//判斷該帖子是否存在
function isExits($code){
preg_match(/ <p>指定的主題不存在或已被刪除或正在被審核,請返回。 </p>/,$code,$error);
return isset($error[0])?false:true;
}

//獲取帖子標題
function getTitle($code){
preg_match(/ <h1>[^ </h1>]*/,$code,$title_tmp);
$title = $title_tmp[0];
return $title;
}

//獲取帖子作者:
function getAuthor($code){
preg_match(/ <a href="space.php?uid=d+" target="_blank" id="userinfod+" onmouseover="showMenu(this.id)">.+/,$code,$author_tmp);
$author = strip_tags($author_tmp[0]);
return $author;
}

//獲取樓主發 表的內容
function getContents($code){
preg_match(/ <div id="postmessage_d+" class="t_msgfont">(.|| )*? </div>/,$code,$contents_tmp);
$contents = preg_replace(/images//,http://bbs.war3.cn/images/,$contents_tmp[0]);
return $contents;
}

//打印帖子標題
function printTitle($title){
echo " <strong> <h2>帖子標題: </h2> </strong>",strip_tags($title)," <br/> <br/>";
}

//輸出帖子作者
function printAuthor($author){
echo " <strong> <h2>帖子作者: </h2> </strong>",strip_tags($author)," <br/> <br/>";
}

// 打印帖子內容
function printContents($contents){
echo " <strong> <h2>作者發表的內容: </h2>",$contents," </strong> <br/>";
}

//錯誤
function printError(){
echo " <i>該帖子不存在! </i>";
}

/*函數列表 end---------------------------------------------------------------------------------------------------*/


/*登錄論壇 begin*/
$url = http://bbs.war3.cn/logging.php?action=login;
$postfields=loginfield=username& amp;username=1nject10n&password=xxxxxx&questionid=0& cookietime=315360000&referer=http://bbs.war3.cn/&loginsubmit=提交 ;
request($url,$postfields,$cookie_jar,);
unset($postfields,$url);
/*登錄論壇 end*/


/*獲取帖子列表(位於第一頁的帖子) begin*/
$url = http://bbs.war3.cn/forumdisplay.php?fid=57;
$code = request($url,,$cookie_jar,);
$threadsList = getThreadsList($code);
/*獲取帖子列表 end*/

//帖子序列
$rows = 0;

/* 循環抓取所有帖子源代碼 begin*/
foreach($threadsList as $list){
$url = "http://bbs.war3.cn/viewthread.php?tid=$list";

if(isExits($code)){
$code = request($url,,$cookie_jar,);
$color = $rows%2==0?#00CCFF:#FFFF33;
echo " <div style=background-color:$color>";
echo " <h1>第",($rows+1),"貼: </h1> <br/>";
$author = getAuthor($code);
printAuthor($author);

$title = getTitle($code);
printTitle($title);

$contents = getContents($code);
printContents($contents);
echo " </div>";
$rows++;
}
else
printError();

echo "----------------------------------------------------------------------------------------- <br/> <br/>";
}
/*抓取源代碼 end*/
?>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved