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

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

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

原文地址:https://www.cnblogs.com/zhaoguoliang/p/3011629.html