php 论坛采集程序 模拟登陆,抓取页面 实现代码
2015-01-24信息快讯网
php 论坛采集程序 模拟登陆,抓取页面 实现代码,需要的朋友可以参考下。
<?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中防止SQL注入实现代码
简单的移动设备检测PHP脚本代码
PHP下通过file_get_contents的代理使用方法
php文件上传表单摘自drupal的代码
php中获取关键词及所属来源搜索引擎名称的代码
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
php抓取页面与代码解析 推荐
PHP多线程抓取网页实现代码
php抓取https的内容的代码
PHP 抓取网页图片并且另存为的实现代码
PHP 抓取新浪读书频道的小说并生成txt电子书的代码
PHP 程序授权验证开发思路
程序员编程十条戒律
php 执行系统命令的方法
PHP 页面跳转到另一个页面的多种方法方法总结
php 多个submit提交表单 处理方法
PHP 上传文件大小限制
phpmyadmin MySQL 加密配置方法
PHP 彩色文字实现代码
php 过滤危险html代码
PHP HTML代码串 截取实现代码
PHP 网页过期时间的控制代码
PHP 超链接 抓取实现代码
抓取YAHOO股票报价的类
DISCUZ 论坛管理员密码忘记的解决方法
discuz论坛 用户登录 后台程序代码
海河写的 Discuz论坛帖子调用js的php代码
[php] 我的微型论坛的简单教程[已完成]第1/8页
Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口