• 自己写的一个简单PHP采集器


    自己写的一个简单PHP采集器



    <?php

    //****************************************************************
    $url = "http://book.sina.com.cn/nzt/lit/zhuxian2/index.shtml";// 图书地址
    $ver = "old"; //新旧版本
    //****************************************************************

    $r = file_get_contents($url); //用file_get_contents将网址打开并读取所打开的页面的内容
    preg_match("/<meta name="description" content="(.*?)">/is",$r,$booktitle);//匹配此页面的标题
    $bookname = $booktitle[1];//取第二层数组
    $preg = '/<li><a href=(.*).shtml target=_blank class="a03">/isU';
    preg_match_all($preg, $r, $zj); //将此页面的章节连接匹配出来
    $bookzj = count($zj[1]);// 计算章节标题数量
    if ($ver=="new"){
    $content_start = "<!--正文内容开始-->";
    $content_end = "<!--正文内容结束-->";
    }
    if ($ver=="old"){
    $content_start = "</table><!--NEWSZW_HZH_END-->";
    $content_end = "<br>";
    }

    header("Content-Type:text/html;charset=gb2312");

    writer($bookname." 共".$bookzj."节 帅哥刘并于".date("D M j G:i:s T Y")."为了毕业而设计小说整理收集 ", "./ailaopo/".$bookname.".txt","w+");
    for ($i=0;$i<$bookzj;$i++) {
    //echo "http://book.sina.com.cn".$zj[1][$i]".shtml";die();
    //用file_get_contents将章节连接打开并读取所打开的页面的内容
    $str = file_get_contents("http://book.sina.com.cn".$zj[1][$i].".shtml");
    preg_match("/(<title>)(.*?)(</title>)/is",$str,$title);//匹配此连接页面的标题
    $title = str_replace("_读书频道_新浪网","",$title[2]);//把$title[2]里面有_读书频道_新浪网的换成空
    preg_match("/(".$content_start.")(.*?)(".$content_end.")/is",$str,$content);//匹配此连接页面的内容
    $content = preg_replace("/<(.*?)>/s","",str_replace("</p>"," ",$content[2]));//用str_replace把$content[2]里有</p> 的换成
    print_r($content);
    exit;
    //把第".($i+1)."节和标题与内容连接在一起放在变量
    $result = " 第".($i+1)."节--------".$title."_汪老师就是帅 --------- ".$content;
    writer($result, "./ailaopo/".$bookname.".txt","a+");//调用函数把$result
    echo "小说".$bookname."共".$bookzj."节,现在整理到第".$i."节 _".$title."<br>";
    }
    echo "小说".$bookname."共".$bookzj."节 已全部整理完成!";

    function writer($content,$url,$mode)//定义函数名 writer 参数$content,$url,$mode
    {
    $fp = fopen($url, $mode);//打开文件$url
    fwrite($fp, $content);//把$content放入到$fp
    fclose($fp); //关闭$fp
    }
    ?>

  • 相关阅读:
    NSCoder
    OC_NSString、
    OC_内存管理(二)对象复制、循环引用问题、自动释放池
    OC_id类型
    OC_内存管理
    当 IDENTITY_INSERT 设置为 OFF 时,不能向表 '#TT' 中的标识列插入显式值。 sql server 临时表
    c# 访问SQL Server 其他会话正在使用事务的上下文
    EF 中事务的书写
    iis 不能访问json文件
    在开源中国(oschina)git中新建标签(tags)
  • 原文地址:https://www.cnblogs.com/honeynm/p/4125703.html
Copyright © 2020-2023  润新知