原理:提取爬虫采集回来的文件,提取正文内容。
程序分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 探讨