php 论坛采集程序 模拟登陆,抓取页面 实现代码

2018-09-07 17:46

阅读:224

  复制代码 代码如下:
<?php
// 吴燕军
// 2009-06-27
// 采集程序php
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(/ <!--[.\r\n]*? <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=\userinfo\d+\ 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\>(.\r\n)*? <\/div>/,$code,$contents_tmp);
$contents = preg_replace(/images\//,
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 =
$postfields=loginfield=username&username=1nject10n& password=xxxxxx&questionid=0&cookietime=315360000& referer=提交;
request($url,$postfields,$cookie_jar,);
unset($postfields,$url);
/*登录论坛 end*/
/*获取帖子列表(位于第一页的帖子) begin*/
$url =
$code = request($url,,$cookie_jar,);
$threadsList = getThreadsList($code);
/*获取帖子列表 end*/
//帖子序列
$rows = 0;
/*循环抓取所有帖子源代码 begin*/
foreach($threadsList as $list){
$url =
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*/
?>


评论


亲,登录后才可以留言!