以前写ASP的时候,要实现采集功能,那简直就是一个浩浩荡荡的大工程,现在用PHP简单多了,轻轻松松简简单单就能把ASP长篇大论才能实现的功能搞定.
这是我用PHP的CURL写的一个采集Discuz的例子,附带模拟登陆,如果不需要模拟登陆就可以直接用File_Get_Contents来采那会更简单.
<?php
set_time_limit(0);

//cookie保存目录
$cookdir = './cookie.tmp';

//模拟请求数据
Function request($url,$action,$cookdir,$referer){
    $ch = curl_init();
    $options = array(CURLOPT_URL => $url,
        CURLOPT_HEADER => 0,
        CURLOPT_NOBODY => 0,
        CURLOPT_PORT => 80,
        CURLOPT_POST => 1,
        CURLOPT_POSTFIELDS => $action,
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_FOLLOWLOCATION => 1,
        CURLOPT_COOKIEJAR => $cookdir,
        CURLOPT_COOKIEFILE => $cookdir,
        CURLOPT_REFERER => $referer
    );
    curl_setopt_array($ch, $options);
    $code = curl_exec($ch);
    curl_close($ch);
    return $code;
}

//获取帖子列表
Function getList($code){
    //<a href="viewthread.php?tid=16&extra=page%3D1">加打塔洗花腳本</a>
    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;
}

//登录论坛/
$url = 'http://www.175club.com/logging.php?action=login';
$action='loginfield=username&username=see7di&password=fjin999&questionid=0&cookietime=315360000&referer=http://bbs.war3.cn/&loginsubmit=提交';
request($url,$action,$cookdir,'');
unset($action,$url);

//获取帖子列表(位于第一页的帖子)
$url = 'http://www.175club.com/forumdisplay.php?fid=5';
$code = request($url,'',$cookdir,'');
$tList = getList($code);

//循环抓取每個帖子內的標題
foreach($tList as $list){
    $url = "http://www.175club.com/viewthread.php?tid={$list}";
    $code = request($url,'',$cookdir,'');
    if(isExits($code)){
        $title = getTitle($code);
        echo "tid:{$list}:",strip_tags($title),"<br>";
    }else{
        echo "tid:{$list}:该帖子不存在!<br>";
    }
}
?>

用PHP的CURL写的一个采集Discuz的例子相关推荐

  1. mvc登录实例 mysql_spring mvc + mybatis + mysql 调整的一个简单的登录例子

    spring mvc + mybatis + mysql 整合的一个简单的登录例子 今天用spring跟mybatis整合写了一个简单的登录例子,第一次整合,给自己做个笔记,可能注释写的有点少,做的不 ...

  2. 学了C语言,如何利用CURL写一个下载程序?—用nmake编译CURL并安装

    在这一系列的前一篇文章学了C语言,如何为下载狂人写一个磁盘剩余容量监控程序?中,我们为下载狂人写了一个程序来监视磁盘的剩余容量,防止下载的东西撑爆了硬盘.可是,这两天,他又抱怨他的下载程序不好用,让我 ...

  3. python从零写一个采集器:获取网页信息

    博客链接 https://uublog.com/article/20170216/python-extarct-html-info/ 前言 获取内容,比较纠结是用BeautifulSoup还是直接用正 ...

  4. python写采集程序_用python写的一个wordpress的采集程序

    在学习python的过程中,经过不断的尝试及努力,终于完成了第一个像样的python程序,虽然还有很多需要优化的地方,但是目前基本上实现了我所要求的功能,先贴一下程序代码: 具体代码如下: #! /u ...

  5. php写的一个超短线选股程序(选股效果还是不错的)

    <?php /* 用php写的一个超短线T+1(第一天买第二天卖)的选股程序 每天早上9:26分运行9:30分买入股票, 第二天早上9:30卖出股票 程序采集了163早盘集合竞价放量的股票,以及 ...

  6. 翻出来的老物件,11年学习易语言之后写的一个游戏策划脚本辅助工具

    翻出来的老物件,11年学习易语言之后写的一个游戏策划脚本辅助工具,某年因为某恶心的项目回乡之后,学了下E语言,学完之后手有点痒痒,于是乎自己想写点东西,因为本身做了很长时间游戏,所以想做个游戏相关的, ...

  7. 聊聊程序员如何学习英语单词:写了一个记单词的小程序

    背景: 关于英文对程序员的重要性,就不多说了! 英语的学习,有很多,今天也不聊多,只聊英语单词! 关于单词的记忆,找过很多方法,下载过很多软件. 如图(其它不好用的都卸载了): 上图算是我以前用过软件 ...

  8. 如何用C语言写出一个微信群聊机器人

    要用 C 语言写出一个微信群聊机器人,您需要先了解微信群聊的相关信息和 C 语言的编程知识. 首先,微信群聊是通过微信服务器进行通信的,因此您需要了解如何通过网络协议与微信服务器进行通信.微信群聊使用 ...

  9. java编程游戏飞机旋转问题_用JAVA写的一个飞机游戏

    根据网上视频教程,用JAVA写的一个飞机程序.先看效果先: 改程序主要应用了面向对象的方法构建,使用了AWT技术和一些双缓冲技术 关键有几个点: 一.双缓冲技术,防止重画造成的屏幕闪烁,可以直接用 p ...

最新文章

  1. ribbon负载均衡@LoadBalanced
  2. 免费图标下载:100个手绘的PSD图标
  3. LeetCode MySQL 550. 游戏玩法分析 IV
  4. 出身寒门的程序员,如何改变命运?
  5. c语言几千行代码图片,【图片】发几个C语言课程设计源代码(恭喜自己当上技术小吧主)【东华理工大学吧】_百度贴吧...
  6. js读取http chunk流_极简 Node.js入门 教程双工流
  7. 我一定要让所有人都知道awk这个实用操作
  8. 回归任务中的评价指标MAE,MSE,RMSE,R-Squared
  9. 能大大提升工作效率和时间效率的9个重要习惯
  10. bili弹幕姬_B站弹幕姬插件——弹幕日志
  11. GitHub上整理的一些工具[转载]
  12. 3星|《未来公司》:Uber简史
  13. Div+Css实现经典左中右布局
  14. python 椭圆曲线加法_椭圆曲线上点的运算
  15. 如何做CEdit中的Undo,Redo(和word类似的输入法输入一次为一个回退块)
  16. java中用length求二维数组的长度
  17. [ 案例源码 ] 利用php开发apicloud 前台加后台源码
  18. C++: 对称数字金字塔
  19. python九九乘法口诀_Python打印出九九乘法口诀
  20. notes获取计算机名,在Lotus Notes数据库中获取最近读取的文档(Get recently read document in Lotus Notes Database)...

热门文章

  1. Java高并发编程详解系列-ThreadAPI简单说明
  2. java正则表达式面试_【Java面试宝典】正则表达式
  3. Go 官方未来会不会支持循环引用?
  4. Go语言结构体的多字段赋值是并发安全的吗?
  5. [翻译]PHP中define()和const定义常量的区别
  6. gzip解压str python_有哪些你不知道的Python小工具
  7. rocketMq双master集群模式下故障演练
  8. React的组件模式 1
  9. python之字符编码(四)
  10. 浅析FastDFS及所遇问题集锦