php 论坛采集程序 模拟登陆,抓取页面 实现代码
2009-07-09 00:00
1056 查看
<?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\//','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&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*/ ?>
相关文章推荐
- php 论坛采集程序 模拟登陆,抓取页面 实现代码
- php 实现信息采集(网页内容抓取)程序代码
- PHP采集、模拟登陆论坛小程序
- php中通过curl模拟登陆discuz论坛的实现代码
- php中通过curl模拟登陆discuz论坛的实现代码
- 针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
- 几种PHP实现网页抓取的程序代码
- .Net Windows 程序中 使用WebBrowser实现需要登陆的页面截取(采集)
- 针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
- 几种PHP实现网页抓取的程序代码
- 静态页面实时调用用户登陆与退出登陆程序(js调用php代码)
- PHP登陆后跳转到登陆前页面实现思路及代码
- PHP实现抓取页面与代码解析
- 简单的asp.net模拟邮箱系统基础实现(二 (2)具体版块功能的实现及关键代码之登陆页面)
- PHP登陆后跳转到登陆前页面实现思路及代码
- php的curl扩展抓取信息——模拟登陆成功却无法抓取页面等问题
- php实现模拟登陆方正教务系统抓取课表