用PHP的CURL写的一个采集Discuz的例子
以前写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的例子相关推荐
- mvc登录实例 mysql_spring mvc + mybatis + mysql 调整的一个简单的登录例子
spring mvc + mybatis + mysql 整合的一个简单的登录例子 今天用spring跟mybatis整合写了一个简单的登录例子,第一次整合,给自己做个笔记,可能注释写的有点少,做的不 ...
- 学了C语言,如何利用CURL写一个下载程序?—用nmake编译CURL并安装
在这一系列的前一篇文章学了C语言,如何为下载狂人写一个磁盘剩余容量监控程序?中,我们为下载狂人写了一个程序来监视磁盘的剩余容量,防止下载的东西撑爆了硬盘.可是,这两天,他又抱怨他的下载程序不好用,让我 ...
- python从零写一个采集器:获取网页信息
博客链接 https://uublog.com/article/20170216/python-extarct-html-info/ 前言 获取内容,比较纠结是用BeautifulSoup还是直接用正 ...
- python写采集程序_用python写的一个wordpress的采集程序
在学习python的过程中,经过不断的尝试及努力,终于完成了第一个像样的python程序,虽然还有很多需要优化的地方,但是目前基本上实现了我所要求的功能,先贴一下程序代码: 具体代码如下: #! /u ...
- php写的一个超短线选股程序(选股效果还是不错的)
<?php /* 用php写的一个超短线T+1(第一天买第二天卖)的选股程序 每天早上9:26分运行9:30分买入股票, 第二天早上9:30卖出股票 程序采集了163早盘集合竞价放量的股票,以及 ...
- 翻出来的老物件,11年学习易语言之后写的一个游戏策划脚本辅助工具
翻出来的老物件,11年学习易语言之后写的一个游戏策划脚本辅助工具,某年因为某恶心的项目回乡之后,学了下E语言,学完之后手有点痒痒,于是乎自己想写点东西,因为本身做了很长时间游戏,所以想做个游戏相关的, ...
- 聊聊程序员如何学习英语单词:写了一个记单词的小程序
背景: 关于英文对程序员的重要性,就不多说了! 英语的学习,有很多,今天也不聊多,只聊英语单词! 关于单词的记忆,找过很多方法,下载过很多软件. 如图(其它不好用的都卸载了): 上图算是我以前用过软件 ...
- 如何用C语言写出一个微信群聊机器人
要用 C 语言写出一个微信群聊机器人,您需要先了解微信群聊的相关信息和 C 语言的编程知识. 首先,微信群聊是通过微信服务器进行通信的,因此您需要了解如何通过网络协议与微信服务器进行通信.微信群聊使用 ...
- java编程游戏飞机旋转问题_用JAVA写的一个飞机游戏
根据网上视频教程,用JAVA写的一个飞机程序.先看效果先: 改程序主要应用了面向对象的方法构建,使用了AWT技术和一些双缓冲技术 关键有几个点: 一.双缓冲技术,防止重画造成的屏幕闪烁,可以直接用 p ...
最新文章
- ribbon负载均衡@LoadBalanced
- 免费图标下载:100个手绘的PSD图标
- LeetCode MySQL 550. 游戏玩法分析 IV
- 出身寒门的程序员,如何改变命运?
- c语言几千行代码图片,【图片】发几个C语言课程设计源代码(恭喜自己当上技术小吧主)【东华理工大学吧】_百度贴吧...
- js读取http chunk流_极简 Node.js入门 教程双工流
- 我一定要让所有人都知道awk这个实用操作
- 回归任务中的评价指标MAE,MSE,RMSE,R-Squared
- 能大大提升工作效率和时间效率的9个重要习惯
- bili弹幕姬_B站弹幕姬插件——弹幕日志
- GitHub上整理的一些工具[转载]
- 3星|《未来公司》:Uber简史
- Div+Css实现经典左中右布局
- python 椭圆曲线加法_椭圆曲线上点的运算
- 如何做CEdit中的Undo,Redo(和word类似的输入法输入一次为一个回退块)
- java中用length求二维数组的长度
- [ 案例源码 ] 利用php开发apicloud 前台加后台源码
- C++: 对称数字金字塔
- python九九乘法口诀_Python打印出九九乘法口诀
- notes获取计算机名,在Lotus Notes数据库中获取最近读取的文档(Get recently read document in Lotus Notes Database)...