php知道与问问的采集插件代码


Posted in PHP onOctober 12, 2010

最近发现知道和问问小偷的版本越来越多了!!
看过一个百度小偷的网站也达到了pr6。收录十万多!!
在经过 荐礼啦 四十天的实践之后 发现百度对这个确实挺友好的。
从网站访问来看 很多也是从百度搜索来的!
所以用知道和问问来填充网站内容还是可行的。
于是自己开发了一个知道 问问的采集插件
原则上适合 php+mysql 并且文章是在一个表的程序
知道采集代码

<?php 
session_start(); 
header("content-type:text/html;charset=gbk"); 
require("stole_config.php"); 
require("conn.php"); 
require("keyword.php"); 
$searchStr=$_GET["searchStr"]; 
$ss=explode(" ",$searchStr);//拆分搜索关键字 
$word="";//关键字设为空 
foreach($ss as $key=>$t) 
{ 
if($key>0) 
{ 
$word .="+"; 
} 
$word .=urlencode($t); 
} 
$jl=intval($_GET['jl']); 
if(isset($_GET['page'])) 
{ 
$page=intval($_GET['page']); 
}else{ 
$page=1; 
} 
$rs=intval($_GET['rs']); 
if($rs>=10) 
{ 
$rs=0; 
$page++; 
} 
if($page>76) 
{ 
echo "采集完毕 ${jl}"; 
exit(); 
} 
if(!empty($searchStr))//如果搜索 
{ 
//获取问题页面 
$content=@file_get_contents("http://zhidao.baidu.com/q?ct=17&lm=0&tn=ikaslist&pn=".(($page-1)*10)."&rn=10&word=".$word); 
//获取问题列表 
preg_match_all("/<a href=\"\/question\/(.*)\.html/iUs",$content,$uid); 
$uid=$uid[1];//获取详细页文章 
$uid=$uid[$rs]; 
//判断数据是否存在 
$suid="bd{$uid}"; 
$sct=mysql_query("select count(*) from {$table_prefix}c_article where suid='$suid' "); 
$sct=mysql_fetch_array($sct); 
$sct=$sct[0]; 
if($sct==0) 
{ 
$content=@file_get_contents("http://zhidao.baidu.com/question/".$uid.".html") ; 
$arr=explode('<cq>',$content); 
$art_title=$arr[1]; 
$arr=explode('</cq>',$art_title); 
$art_title=$arr[0];//获取标题结束 
//判断内容是否符合 
$word_arr=explode(",",$cj_word); 
$word_allow=false;//初始化是否允许采集 
$word_count=count($word_arr);//关键字总数 
for($i=0;$i<$word_count;$i++) 
{ 
if(substr_count($art_title,$word_arr[$i])>0) 
{ 
$word_allow=1; 
$i=$word_count; 
} 
} 
if($word_allow)//如果满足条件 
{ 
$arr=explode('<cd><pre>',$content); 
$contentQuestion=$arr[1]; 
$arr=explode('</pre></cd>',$contentQuestion); 
$contentQuestion=$arr[0]; 
echo "开始采集内容<br>"; 
echo "$art_title<br>"; 
@preg_match_all('/(<ca>|<cn>)<pre>(.*)<\/pre>(<\/ca>|<\/cn>)/iUs',$content,$answerArr); 
$answerArr=$answerArr[2]; 
if($arr_order==1)//随机排序 
{ 
shuffle($answerArr); 
} 
if($arr_order==2)//倒序 
{ 
$answerArr=krsort($answerArr);//倒序 
} 
foreach($answerArr as $t) 
{ 
$answerTemp=str_replace('<ca><pre>','',$t); 
$answerTemp=str_replace('</pre></ca>','',$answerTemp); 
$answerTemp=str_replace('<cn><pre>','',$answerTemp); 
$answerTemp=str_replace('</pre></cn>','',$answerTemp); 
if(strlen($answerTemp)>$min_t1) 
{ 
$art_content .=$answerTemp."<br>"; 
} 
} 
//去除链接 
$s1="/(<a .*>)(.*)<\/a>/iUs"; 
$art_content=preg_replace($s1,${2},trim($art_content)); 
$art_content=str_replace("\n\r","<br>",$art_content); 
if(strlen($art_content)>$min_t2) 
{ 
$title_ct=mysql_query("select count(*) from {$table_prefix}c_article where art_title ='$art_title' ");//查看标题是否重复 
$title_ct=@mysql_fetch_array($title_ct); 
$title_ct=$title_ct[0]; 
if($title_ct>0) 
{ 
$art_title .="{$same_title}{$title_ct}"; 
} 
$art_time=date("Y-m-d"); 
$art_content=strtr($art_content,$keyword); 
$sql="insert into {$table_prefix}c_article(art_title,art_content,art_time,art_author,suid) values('$art_title','$art_content','$art_time','$art_author','$suid')";//插入采集表 
mysql_query($sql); 
if(empty($t_catx_id))//如果无分类 
{ 
$sql2="insert into {$t_table}({$t_art_title},{$t_art_content},{$t_art_time},{$t_artx_author}) values('$art_title','$art_content','$art_time','$art_author')"; 
}else 
{ 
$sql2="insert into {$t_table}({$t_art_title},{$t_art_content},{$t_art_time},{$t_artx_author},{$t_catx_id}) values('$art_title','$art_content','$art_time','$art_author','$cat_id')"; 
} 
mysql_query($sql2);//插入文章表 
$jl++; 
//数据库处理完毕 
}else 
{ 
echo "内容长度不够"; 
} 
//获取文章内容结束 
}else 
{ 
echo "主题不符合要求"; 
} 
}else 
{ 
echo "已经存在"; 
}$rs++; 
file_put_contents("bd.txt","采集{$searchStr}到第{$page}第{$rs}条"); 
echo "<script>location.href='baidu.php?searchStr=".urlencode($searchStr)."&page=".$page."&rs=".$rs."&jl=".$jl." ';</script>"; 
exit(); 
} 
?> 
<link href="style.css" rel="stylesheet" type="text/css" /> 
<table width="700" border="0" align="center" cellspacing="1" bgcolor="#CCCCCC"> 
<tr> 
<td height="50" align="center" bgcolor="#00CC00"><h1><a href="http://www.jianlila.com">荐礼啦</a>知道问问采集插件</h1></td> 
</tr> 
</table> 
<table width="700" border="0" align="center" cellspacing="1" bgcolor="#CCCCCC" style="margin-top:6px; margin-bottom:6px;"> 
<tr> 
<td height="30" align="center" bgcolor="#FFFFFF"><a href="cj_config.php">采集设置</a> <a href="uninstall.php" onclick="return confirm('您确定要卸载采集插件吗');">卸载采集</a> <a href="cj_view.php">查看采集记录</a> <a href="cj_help.php">采集帮助</a> <a href="baidu.php" target="_blank">知道采集</a>  <a href="wenwen.php" target="_blank">问问采集</a></td> 
</tr> 
</table> 
<table width="537" height="45" align="center" style="margin-top:30px;"><tr><td height="39"> 
<form id="form1" name="form1" method="get" action="baidu.php"> 
<div id="search"> 
<input name="searchStr" type="text" id="searchStr" value="<?php echo $searchStr; ?>" size="60" /> 
<input type="submit" name="searchBtn" id="searchBtn" value="知道偷偷" style="height:25px; line-height:25px;" /> 
</div> 
</form> 
</td></tr></table>

问问采集代码:
<?php 
session_start(); 
header("content-type:text/html;charset=utf-8"); 
require("stole_config.php"); 
require("conn.php"); 
require("keyword.php"); 
if(!empty($_POST['ask'])) 
{ 
$ask=urlencode(trim($_POST['ask']));//获取表单提交的问题 
$sp="S".$ask; 
}else 
{ 
$sp=urlencode($_GET['sp']); 
} 
if(empty($_GET['jl'])) 
{ 
$_GET['jl']=1; 
} 
$jl=$_GET['jl']; 
$pg=intval($_GET['pg']);//获取页数 
$rs=intval($_GET['rs']);//获得 记录的参数 
if($rs>9) 
{ 
$rs=0; 
$pg++; 
} 
if($pg>51) 
{ 
echo "采集完毕! 总共采集 ".urldecode($sp)." ".$jl."条记录"; 
exit(); 
} 
if($sp)//有设定答案才开始 
{ 
$str=@file_get_contents("http://wenwen.soso.com/z/Search.e?sp={$sp}&pg={$pg}"); 
@preg_match("/<ol class=\"result_list\">(.*)<\/ol>/iUs",$str,$asklist);//获取问答列表 
//echo $asklist[1]; 
$url="/<a target=\"_blank\" href=\"\/z\/(q.*\.htm)/iUs"; 
@preg_match_all($url,$asklist[1],$urllist);//获取 所有的问题 
$t=$urllist[1][$rs]; 
$uid=$t; 
$suid="ww{$uid}"; 
$sct=mysql_query("select count(*) from {$table_prefix}c_article where suid='$suid' "); 
$sct=mysql_fetch_array($sct); 
$sct=$sct[0]; 
if($sct==0) 
{ 
$html=@file_get_contents("http://wenwen.soso.com/z/${t}"); 
$html=str_replace("<pre>","",str_replace("</pre>","",$html)); 
$html=str_replace("<br/><br/><br/>","<br/><br/>",$html); 
//echo $html; 
@preg_match("/<div class=\"question_main\">.*<h3>(.*)<\/h3>/iUs",$html,$ask_title); 
$art_title=$ask_title[1]; 
@preg_match("/<div class=\"answer_con\">(.*)<\/div>/iUs",$html,$answer); 
$j=count($answer)-1; 
$art_content="";//商品详细 
for($i=$j;$i>=1;$i--) 
{ 
if(strlen($answer[$i])>$min_t1) 
{ 
$art_content .= $answer[$i]; 
} 
} 
$art_content=trim($art_content); 
$s1="/(<a .*>)(.*)<\/a>/iUs"; 
$art_content=preg_replace($s1,${2},trim($art_content)); 
$word_arr=explode(",",iconv("gbk","utf-8",$cj_word)); 
$word_allow=false;//初始化是否允许采集 
$word_count=count($word_arr);//总数 
for($i=0;$i<$word_count;$i++) 
{ 
if(substr_count($art_title,$word_arr[$i])>0) 
{ 
$word_allow=1; 
$i=$word_count; 
} 
} 
if($word_allow)//如果合法 
{ //开始处理数据库 
if(strlen($art_content)>$min_t2) 
{ 
echo "<font color=red>添加中............................</font><br>"; 
echo $art_title."<br>"; 
$art_title=iconv('utf-8','gbk', $art_title); 
$title_ct=mysql_query("select count(*) from {$table_prefix}c_article where art_title ='$art_title' ");//查看标题是否重复 
$title_ct=@mysql_fetch_array($title_ct); 
$title_ct=$title_ct[0]; 
if($title_ct>0) 
{ 
$art_title .="{$same_title}{$title_ct}"; 
} 
$art_content=iconv('utf-8','gbk',str_replace("\r\n","<br>",$art_content)); 
$art_content=strtr($art_content,$keyword); 
$art_time=date("Y-m-d"); 
$sql="insert into {$table_prefix}c_article(art_title,art_content,art_time,art_author,suid) values('$art_title','$art_content','$art_time','$art_author','$suid')";//插入采集表 
mysql_query($sql); 
if(empty($t_catx_id))//如果无分类 
{ 
$sql2="insert into {$t_table}({$t_art_title},{$t_art_content},{$t_art_time},{$t_artx_author}) values('$art_title','$art_content','$art_time','$art_author')"; 
}else 
{ 
$sql2="insert into {$t_table}({$t_art_title},{$t_art_content},{$t_art_time},{$t_artx_author},{$t_catx_id}) values('$art_title','$art_content','$art_time','$art_author','$cat_id')"; 
} 
mysql_query($sql2);//插入文章表 
$jl++;//如果存放数据库中 则记录加1 
//处理数据库结束 
}else 
{ 
echo "长度不够"; 
} 
}else 
{ 
echo "主题不符合要求"; 
} 
}else 
{ 
echo "已经存在"; 
} 
$rs++; 
//记录下本次采集 的状况 
$f_tt= urldecode($sp)."--页数".$pg." 记录数 ".$jl ; 
file_put_contents("ss.txt",$f_tt); 
echo "<script>location.href='wenwen.php?jl=".$jl."&sp=".$sp."&pg=".$pg."&rs=".$rs." ';</script>"; 
exit(); 
} 
?> 
<link href="style.css" rel="stylesheet" type="text/css" /> 
<table width="700" border="0" align="center" cellspacing="1" bgcolor="#CCCCCC"> 
<tr> 
<td height="50" align="center" bgcolor="#00CC00"><h1><a href="http://www.jianlila.com">荐礼啦</a>知道问问采集插件</h1></td> 
</tr> 
</table> 
<table width="700" border="0" align="center" cellspacing="1" bgcolor="#CCCCCC" style="margin-top:6px; margin-bottom:6px;"> 
<tr> 
<td height="30" align="center" bgcolor="#FFFFFF"><a href="cj_config.php">采集设置</a> <a href="uninstall.php" onclick="return confirm('您确定要卸载采集插件吗');">卸载采集</a> <a href="cj_view.php">查看采集记录</a> <a href="cj_help.php">采集帮助</a> <a href="baidu.php" target="_blank">知道采集</a>  <a href="wenwen.php" target="_blank">问问采集</a></td> 
</tr> 
</table> 
<form action="wenwen.php" method="post"> 
<table width="628" height="49" border="0" align="center"> 
<tr> 
<td width="413" align="right"><input name="ask" type="text" id="ask" size="50"></td> 
<td width="205"><input type="submit" name="button" id="button" value="问问采集" style=" padding-left:15px; padding-right:15px; height:25px; line-height:25px;"></td> 
</tr> 
</table> 
</form>
PHP 相关文章推荐
PHP也可以?成Shell Script
Oct 09 PHP
php5 non-thread-safe和thread-safe这两个版本的区别分析
Mar 13 PHP
php max_execution_time执行时间问题
Jul 17 PHP
PHP笔记之:日期函数的使用介绍
Apr 24 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
Jun 18 PHP
根据ip调用新浪api获取城市名并转成拼音
Mar 07 PHP
CI框架中集成CKEditor编辑器的教程
Jun 09 PHP
php序列化函数serialize() 和 unserialize() 与原生函数对比
May 08 PHP
thinkPHP中多维数组的遍历方法
Jan 09 PHP
java模拟PHP的pack和unpack类
Apr 13 PHP
php+ajax实现仿百度查询下拉内容功能示例
Oct 20 PHP
php往mysql中批量插入数据实例教程
Dec 12 PHP
php笔记之常用文件操作
Oct 12 #PHP
php+jquery编码方面的一些心得(utf-8 gb2312)
Oct 12 #PHP
windows下升级PHP到5.3.3的过程及注意事项
Oct 12 #PHP
PHP OPCode缓存 APC详细介绍
Oct 12 #PHP
并发下常见的加锁及锁的PHP具体实现代码
Oct 12 #PHP
PHP开发的一些注意点总结
Oct 12 #PHP
php更改目录及子目录下所有的文件后缀的代码
Sep 24 #PHP
You might like
zend api扩展的php对象的autoload工具
2011/04/18 PHP
浅析PKI加密解密 OpenSSL
2013/07/01 PHP
PHP中spl_autoload_register()和__autoload()区别分析
2014/05/10 PHP
PHP实现货币换算的方法
2014/11/29 PHP
详解PHP的Yii框架中日志的相关配置及使用
2015/12/08 PHP
php获取服务器操作系统相关信息的方法
2016/10/08 PHP
thinkphp5框架前后端分离项目实现分页功能的方法分析
2019/10/08 PHP
关于js获取radio和select的属性并控制的代码
2011/05/12 Javascript
jquery实现图片滚动效果的简单实例
2013/11/23 Javascript
js返回前一页刷新本页重载页面
2014/07/29 Javascript
js实现背景图片感应鼠标变化的方法
2015/02/28 Javascript
JSON遍历方式实例总结
2015/12/07 Javascript
Kotlin学习第一步 kotlin语法特性
2017/05/25 Javascript
让Vue也可以使用Redux的方法
2018/05/23 Javascript
vue form check 表单验证的实现代码
2018/12/09 Javascript
详解Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成)
2019/04/20 Javascript
[04:28]DOTA2亚洲邀请赛小组赛第五日 TOP10精彩集锦
2015/02/03 DOTA
[46:14]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第一场 12.11
2020/12/16 DOTA
python实现dict版图遍历示例
2014/02/19 Python
利用python获取Ping结果示例代码
2017/07/06 Python
python脚本替换指定行实现步骤
2017/07/11 Python
详解python实现识别手写MNIST数字集的程序
2018/08/03 Python
python实现zabbix发送短信脚本
2018/09/17 Python
Python 数据库操作 SQLAlchemy的示例代码
2019/02/18 Python
简单的Python调度器Schedule详解
2019/08/30 Python
使用 Python 合并多个格式一致的 Excel 文件(推荐)
2019/12/09 Python
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
2020/01/18 Python
基于pygame实现童年掌机打砖块游戏
2020/02/25 Python
将tf.batch_matmul替换成tf.matmul的实现
2020/06/18 Python
Nike台湾官方商店:Nike.com (TW)
2017/08/16 全球购物
Book Depository澳大利亚:世界领先的专业在线书店之一
2018/12/27 全球购物
西雅图电动自行车公司:Rad Power Bikes
2020/02/02 全球购物
毕业生找工作求职信
2014/08/05 职场文书
2015年青年教师工作总结
2015/05/25 职场文书
安全第一课观后感
2015/06/18 职场文书
学雷锋活动简报
2015/07/20 职场文书