原理:提取爬虫采集回来的文件,提取正文内容。
程序分2个文件夹:
为避免shell检测出错,起名为pa_main为爬虫主程序,pa_control为控制程序。
功能:larbin采集数据 检测文件大小 处理文件夹下网页文件提取入库 * 时间:2013-4-2 * 作者:lovelover * 操作:
按照以下顺序执行
./shstart_daxiao.sh #(检测save文件夹大小 以便控制larbin的实时开关) ./shstart_getcode.sh #(提取网页标题和内容 入库) ./shstart_jiance.sh #(打开检测save文件夹有新增文件没)
./killallphp.sh &
关闭larbin进程用 killall larbin 结束
dingshi_jiance.sh为定时检测save目录的大小
代码如下:
#!/bin/sh while [ 1 ] do echo "" echo "正在定时检测save大小 控制爬虫的开关。。。!" echo "" s=`du -sh -b /pa_main/save|awk '{print $1}'` echo "当前大小: $s。" echo "" if [ $s -gt 1000000000 ] then echo "超过1000M了" echo "" if test $( pgrep -f larbin | wc -l ) -eq 0 then echo "爬虫关闭中,不做任何操作!" echo "" else echo "发现爬虫运行中,立刻终止进程!" echo "" killall larbin fi else if [ $s -gt 900000000 ] then echo "大于900M了,不做任何操作!" echo "" else echo "小于900M了" echo "" if test $( pgrep -f larbin | wc -l ) -eq 0 then echo "爬虫关闭中,马上开启" echo "" cd /pa_main/ ./larbin -scratch & else echo "爬虫运行中..." echo "" fi fi fi echo "" echo "---------------------------------------------------" sleep 5 done
dingshi_jiance.sh为 定时检测后面提取数据的队列的进度情况
代码如下:
#!/bin/sh while [ 1 ] do echo "start dingshi_jiance!"; PHP="/usr/local/php/bin/php" PROGRAM="/pa_control/aaa_jiance.php" #start dameo $PHP $PROGRAM & sleep 60 done
aaa_jiance.php 实际检测代码如下:
<?php //error_reporting(0); set_time_limit(0); include_once dirname(__FILE__)."/httpsqs_client.php"; /*遍历目录*/ function traverse($path){ $current_dir = opendir($path); //opendir()返回一个目录句柄,失败返回false while(($file = readdir($current_dir)) !== false) { //readdir()返回打开目录句柄中的一个条目 $sub_dir = $path . DIRECTORY_SEPARATOR . $file; //构建子目录路径 if($file == '.' || $file == '..') { continue; } else if(is_dir($sub_dir)) { //如果是目录,进行递归 echo 'Directory ' . $file . ':<br>'; traverse($sub_dir); } else { //如果是文件,直接输出 echo "File in Directory " . $path . ": " . $file . "<br>"; echo "<br>"; $httpsqs_host='127.0.0.1'; $httpsqs_port='1218'; $httpsqs_auth=''; $httpsqs_charset='UTF-8'; $httpsqs = new httpsqs($httpsqs_host, $httpsqs_port, $httpsqs_auth, $httpsqs_charset); $queue_name='getcode'; $queue_data=$path.'/'.$file; $httpsqs->put($queue_name, $queue_data); echo '发布队列成功!'; echo "<br>"; } } } /*检测是否处理完了 开始*/ $httpsqs_host='127.0.0.1'; $httpsqs_port='1218'; $httpsqs_auth=''; $httpsqs_charset='UTF-8'; $queue_name='getcode'; $httpsqs8 = new httpsqs($httpsqs_host, $httpsqs_port, $httpsqs_auth, $httpsqs_charset); $result8 = $httpsqs8->status_json($queue_name); $str=json_decode($result8); $num=$str->unread; if($num=='0') { traverse('/pa_main/save'); }else{ echo "上次操作还没有提取完,还剩 ".$num." 个。过1分钟后自动再试\n"; } /*检测是否处理完了 结束*/ ?>
。。。。。。。。。。。
全自动配置了爬虫 让其自动抓取数据 提取 哈哈 经测试在服务器一天200M的数据提取入库
我的QQ 1279331492 探讨