+ -
当前位置:首页 → 问答吧 → 代码之美--简单采集的采集程序

代码之美--简单采集的采集程序

时间:2008-10-07

来源:互联网

  在发代码之前有必要说说自己的想法,代码之美其实可以说成是表面美和内在的美.表面美就是在代码的排版缩进上,内在的美在于编程的思路上,唯有两者兼顾才是真正的美.

  我是新手,所以拿不出什么像样的代码,下面的这段代码即不是内在美也不是外在美,希望大家见谅.
好好的格式一进来就变样了

<!--导入ajax.js文件-->
<script src="ajax.js"></script>
<!--这是每本小说的提交入口-->
<form id="form1" method="post">
  <input name="url" type="text" id="url" size="40" />
  <select name="select" id="select">
    <option value="1">玄幻小说</option>
    <option value="2">武侠小说</option>
    <option value="3">网游小说</option>
    <option value="4">言情小说</option>
    <option value="5">恐怖灵异</option>
    <option value="6">历史军事</option>
    <option value="7">科幻小说</option>
    <option value="8">网络小说</option>
    <option value="9">都市小说</option>
    <option value="10">全本小说</option>
  </select>
  <input type="submit" name="button" id="button" value="提交" />
</form>
<!--下面这个div主要是采集状态显示-->
<div id="display"></div>
<script>
/*新建两个AJAX变量 以及一个定时变量*/
var ajax_get_url;
var ajax_get_book;
var time;
/*这是一个得到指定ID的节点*/
function $(obj){
  return document.getElementById(obj);
}
/*获取要采集的网址,并用ajax提交*/
function get_url(){
  url=$("url").value;//获取网址
  fl=$("select").value;//获取分类
  ajax_get_url=new ajax("g2.php","url="+url+"&select="+fl,get_url_result);//发送请求
  return false;//本函数返回空,是为了防止页面刷新
}
/*get_url()函数通过ajax请求返回状态*/
function get_url_result(str){
  $("display").innerHTML=str;//显示状态
  get_book();//开始采集书中的章节
}
/*开始采集书中的章节*/
function get_book(){
  clearTimeout(time);//清空定时间函数
  ajax_get_book=new ajax("g3.php","",get_book_result);//激活g3.php这个文件
  time=setTimeout("get_book()",10000);//每十秒重复执行本函数一次,这个主要用于防止在请求g3.php中卡死,没有反映后十秒重新激活
}
/*返回结果处理*/
function get_book_result(str){
/*如果返回的内容str为空不作任何处理*/
  if(str!=""){
    $("display").innerHTML=str;/*显示返回的状态*/
    clearTimeout(time);/*清空定时*/
    time=setTimeout("get_book()",1000);/*当返回内容后在接着下一步采集*/
  }
}
</script>




作者: gvtbs   发布时间: 2008-10-07

[php]
<?
require_once 'conn.php';//引用数据库联接文件
/*本存图片函数*/
function getimg($url,$filename){
        /*判断图片的url是否为空,如果为空停止函数*/
        if($url==""){
                return false;
        }
        /*取得图片的扩展名,存入变量$ext中*/
        $ext=strrchr($url,".");
        /*判断是否是合法的图片文件*/
    if($ext!=".gif" && $ext!=".jpg"){
                return false;
        }
        /*读取图片*/
        $img=file_get_contents($url);
        /*打开指定的文件*/
        $fp=@fopen($filename.$ext,"a");
        /*写入图片到指点的文件*/
        fwrite($fp,$img);
        /*关闭文件*/
        fclose($fp);
        /*返回图片的新文件名*/
        return $filename.$ext;
}
/*得到要采的地址*/
$url=$_POST["url"];
/*得到要采内容的分类*/
$fl=$_POST["select"];
/*如果两个都不等于空,开始采集*/
if($url!="" && $fl!=""){
        /*获取内容*/
        $content=strtolower(file_get_contents($url));
        /*匹配标题*/
        preg_match_all("/<h1><a(.*?)>(.*?)<\/a><\/h1>/",$content,$t_title);
        $title=trim($t_title[2][0]);
        /*匹配图片*/
        preg_match_all("/<div class=\"bllump_img\"><a(.*?)><img src=\'(.*?)\' (.*?)><\/a><\/div>/",$content,$t_img);
        $img=$t_img[2][0];
        /*匹配作者*/
        preg_match_all("/<b>作者:<\/b>(.*?)<\/div>/",$content,$t_author);
        $author=trim($t_author[1][0]);
        /*匹配简介*/
        preg_match_all("/<div class=\"lrcon\">(.*?)<div class=\"listright_table\">/is",$content,$t_jj);
        $xs_jj=htmlspecialchars(strip_tags($t_jj[1][0]));
        /*清除简介中的空格*/       
        $xs_jj=str_replace('&amp;nbsp;&amp;nbsp;&amp;nbsp;','',$xs_jj);
        $xs_jj=trim(str_replace('&amp;nbsp;[全文]','',$xs_jj));
        /*如果标题不存在,采集失败*/
        if($title==""){
                echo "小说不存在";
                exit;
        }
        /*生成图片的名字*/
        $fliename="book_img/".time()."_".rand(0,9999);
        /*保存图片*/
        $img_url=getimg($img,$fliename);
        /*把小说入库*/
        mysql_query("insert into book (type,title,author,jj,addtime,img) values ('".$fl."','".$title."','".$author."','".$xs_jj."','".time()."','".$img_url."')");
        /*获得小说编号*/
        $book_id=mysql_insert_id();
        /*匹配小说文章列表*/
        preg_match_all("/href=\"\.\.\/detail(.*?)\"/",$content,$nl_url);
        /*读出列表长度*/
        $max=count($nl_url[1]);
        /*把列表存入任务表*/
        for($i=0;$i<$max;$i++){
                $time_url="http://www.*****.com.cn/detail".$nl_url[1][$i];
                mysql_query("insert into task (url,cj_state,book_id) values ('".$time_url."','0','".$book_id."')");
        }
        /*返回结束*/
        echo 1;
}
/*返回结束*/
echo 1;
?>
[/php]

作者: gvtbs   发布时间: 2008-10-07

这个采集还有一个文件没有放上来,东西很简单不过这个恩路大家可以去想想怎么应用哦.把JS与PHP完美的结合

作者: gvtbs   发布时间: 2008-10-07

嗯,可以稳定的进行采集啊.先收藏学习下.

作者: wanchun0222   发布时间: 2008-10-14

学习...

作者: jonma   发布时间: 2009-06-27