php如何采集,php采集入门教程,教你如何写采集

http://book.sina.com.cn/nzt/lit/zhuxian2/index.shtml";// 图书地址

有了上边讲的,现在应该可以完全写出来了,开始代码:

//****************************************************************

$url = "http://book.sina.com.cn/nzt/lit/zhuxian2/index.shtml";// 图书地址

$ver = "old"; //新旧版本

//因为图书他的页面又两种板式,所以我们要在这里区别一下

//****************************************************************

// 获取页面代码 file_get_contents() 把文件读入一个字符串,下边的时候需要用到

$r = file_get_contents($url);

//在上边获取的字符串中搜索标题,并赋值给变量$booktitle,$booktitle是数组,/is就凑活理解成开始吧!

preg_match("//is",$r,$booktitle);

//把第一个出现捕获的标题赋值给变量bookname。

$bookname = $booktitle[1]; //书名

//print_r ($booktitle);die();不理解的输出这个看看,嘿嘿,帮助大家理解

/*************************************************************************************

*原形:

第四十五章  伤痛(1)

*规律是:

不固定

*ISU是正则的一种模式,该模式是非贪婪模式,也就是说只要匹配上就结束

*************************************************************************************/

$preg = '/

/isU';

/********************************************************************************

*preg_match_all进行全局正则表达式匹配

*原形:

*

int preg_match_all

*

( string pattern, string subject, array matches [, int flags] )

*意思是:在全局搜索资源变量$preg,得到一个数组赋值给一个变量$zj,这个变量也就是数组了。

*取得其中的资源的时候用标示就可以,不会的看下数组哦!

*汪老师说了,不会数组的给我出去啃书,什么时候会了进来

**********************************************************************************/

preg_match_all($preg, $r, $zj);

//print_r ($zj);die();不理解的输出这个看看,嘿嘿,帮助大家理解

// 计算标题数量,我是问了最后提示大家看又多少章节,采集了多少

$bookzj = count($zj[1]);

//判断你要采集的板式是那种哦,因为内容开始不一样哦,其实可以自动判断的,我也写成了,但是不发布,因为很简单

if ($ver=="new"){

$content_start = "";

$content_end = "";

}

if ($ver=="old"){

$content_start = "";

$content_end = "
";

}

//采集后的文件,然后那来进行处理.这个是设置编码的,为什么是这个呢,因为你看下网站http://book.sina.com.cn".$zj[1][$i]".shtml";die();

$str = file_get_contents("http://book.sina.com.cn".$zj[1][$i].".shtml");

preg_match("/(

)(.*?)()/is",$str,$title);

$title = str_replace("_读书频道_新浪网","",preg_replace("//s","",$title[2]));

/***************************************************************************

*preg_replace执行正则表达式的搜索和替换

*str_replace用法真的不好说,就看例子吧!其实就是一个替换

* str   =   "abcabc".replace(/a/g,   "d");         //结果为   dbcdbc

* str   =   "abcabc".replace(/a/,   "d");         //结果为   dbcabc

***************************************************************************/

preg_match("/(".$content_start.")(.*?)(".$content_end.")/is",$str,$content);

$content = preg_replace("//s","",str_replace("

","rn",$content[2]));

$content = str_replace("

","",preg_replace("/^[s]*n/is","",$content));

$content = str_replace("  ? ","  ",preg_replace("/^[s]*n/is","",$content));

$result = " rn第".($i 1)."节--------".$title."_汪老师就是帅 --------- rn".$content;

//var_dump ($result);die();

writer($result, "./ailaopo/".$bookname.".txt","a ");

echo "小说".$bookname."共".$bookzj."节,现在整理到第".$i."节 _".$title."
";

}

echo "小说".$bookname."共".$bookzj."节 已全部整理完成!";

function writer($content,$url,$mode)

{

$fp = fopen($url, $mode);

fwrite($fp, $content);

fclose($fp);

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值