一个简单PHP采集器

jerry PHP 2015年09月15日 收藏
  1. <?php 
  2.  
  3. //**************************************************************** 
  4. $url = "http://book.sina.com.cn/nzt/lit/zhuxian2/index.shtml";// 图书地址 
  5. $ver = "old"; //新旧版本 
  6. //**************************************************************** 
  7.  
  8. $r = file_get_contents($url); //用file_get_contents将网址打开并读取所打开的页面的内容 
  9. preg_match("/<meta name=\"description\" content=\"(.*?)\">/is",$r,$booktitle);//匹配此页面的标题 
  10. $bookname = $booktitle[1];//取第二层数组 
  11. $preg = '/<li><a href=(.*).shtml target=_blank class=a03>/isU'; 
  12. preg_match_all($preg, $r, $zj); //将此页面的章节连接匹配出来 
  13. $bookzj = count($zj[1]);// 计算章节标题数量 
  14. if ($ver=="new"){ 
  15. $content_start = "<!--正文内容开始-->"; 
  16. $content_end = "<!--正文内容结束-->"; 
  17. } 
  18. if ($ver=="old"){ 
  19. $content_start = "<\/table><!--NEWSZW_HZH_END-->"; 
  20. $content_end = "<br>"; 
  21. } 
  22.  
  23. header("Content-Type:text/html;charset=gb2312"); 
  24.  
  25. writer($bookname." 共".$bookzj."节\r\n帅哥刘并于".date("D M j G:i:s T Y")."为了毕业而设计小说整理收集\r\n", "./ailaopo/".$bookname.".txt","w+"); 
  26. for ($i=0;$i<$bookzj;$i++) { 
  27. //echo "http://book.sina.com.cn".$zj[1][$i]".shtml";die(); 
  28. //用file_get_contents将章节连接打开并读取所打开的页面的内容 
  29. $str = file_get_contents("http://book.sina.com.cn".$zj[1][$i].".shtml"); 
  30. preg_match("/(<title>)(.*?)(<\/title>)/is",$str,$title);//匹配此连接页面的标题 
  31. $title = str_replace("_读书频道_新浪网","",$title[2]);//把$title[2]里面有_读书频道_新浪网的换成空 
  32. preg_match("/(".$content_start.")(.*?)(".$content_end.")/is",$str,$content);//匹配此连接页面的内容 
  33. $content = preg_replace("/<(.*?)>/s","",str_replace("</p>","\r\n",$content[2]));//用str_replace把$content[2]里有</p> 的换成\r\n 
  34. print_r($content); 
  35. exit; 
  36. //把第".($i+1)."节和标题与内容连接在一起放在变量 
  37. $result = " \r\n第".($i+1)."节--------".$title."_汪老师就是帅 --------- \r\n".$content; 
  38. writer($result, "./ailaopo/".$bookname.".txt","a+");//调用函数把$result 
  39. echo "小说".$bookname."共".$bookzj."节,现在整理到第".$i."节 _".$title."<br>"; 
  40. } 
  41. echo "小说".$bookname."共".$bookzj."节 已全部整理完成!"; 
  42.  
  43. function writer($content,$url,$mode)//定义函数名 writer 参数$content,$url,$mode 
  44. { 
  45. $fp = fopen($url, $mode);//打开文件$url 
  46. fwrite($fp, $content);//把$content放入到$fp 
  47. fclose($fp); //关闭$fp 
  48. } 
  49. ?>