基于larbin的搜索蜘蛛的扩展,自动匹配提取正文数据和入库,sphinx全文检索

时间:2021-01-22 08:19:51

原理:提取爬虫采集回来的文件,提取正文内容。

程序分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 探讨