当前访客身份:游客 [ 登录 | 加入 OSCHINA ]

代码分享

当前位置:
代码分享 » PHP  » 网页设计与交互
疯狂的流浪

一个简单PHP采集器

疯狂的流浪 发布于 2010年12月22日 22时, 17评/45446阅
分享到: 
收藏 +0
1

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

标签: 简单 PHP 采集器

代码片段(1) [全屏查看所有代码]

1. [代码][PHP]代码     跳至 [1] [全屏预览]

<?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."节\r\n帅哥刘并于".date("D M j G:i:s T Y")."为了毕业而设计小说整理收集\r\n", "./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>","\r\n",$content[2]));//用str_replace把$content[2]里有</p> 的换成\r\n 
print_r($content); 
exit; 
//把第".($i+1)."节和标题与内容连接在一起放在变量 
$result = " \r\n第".($i+1)."节--------".$title."_汪老师就是帅 --------- \r\n".$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 
} 
?> 


开源中国-程序员在线工具:Git代码托管 API文档大全(120+) JS在线编辑演示 二维码 更多»

发表评论 回到顶部 网友评论(17)

  • 1楼:Midnight 发表于 2010-12-22 23:59 回复此评论
    代码太密集了...
  • 2楼:疯狂的流浪 发表于 2010-12-23 07:20 回复此评论

    引用来自“杨云洲”的评论

    代码太密集了...
    有一点 原来自己写的也没怎么注意 不过效果感觉还可以 呵呵
  • 3楼:Midnight 发表于 2010-12-23 07:33 回复此评论

    引用来自“疯狂的流浪”的评论

    引用来自“杨云洲”的评论

    代码太密集了...
    有一点 原来自己写的也没怎么注意 不过效果感觉还可以 呵呵
    呵呵, 看见你发的不少代码都是这样, 以后格式化后再发上来, 读起来容易点
  • 4楼:疯狂的流浪 发表于 2010-12-23 13:17 回复此评论

    引用来自“杨云洲”的评论

    引用来自“疯狂的流浪”的评论

    引用来自“杨云洲”的评论

    代码太密集了...
    有一点 原来自己写的也没怎么注意 不过效果感觉还可以 呵呵
    呵呵, 看见你发的不少代码都是这样, 以后格式化后再发上来, 读起来容易点
    恩 我会注意的啊 这个是原来写的 也没怎么注意规范 呵呵
  • 5楼:刘龙 发表于 2010-12-28 09:47 回复此评论
    采集最好加个是否需要采集的变量嘛,然后判断是否已采集,或者是否需要更新
  • 6楼:疯狂的流浪 发表于 2010-12-28 13:20 回复此评论

    引用来自“刘龙”的评论

    采集最好加个是否需要采集的变量嘛,然后判断是否已采集,或者是否需要更新
    呵呵 确实 谢谢提醒了啊
  • 7楼:feng157aaa 发表于 2011-03-21 14:19 回复此评论
    刚试了,采集不到东西了,是不是代码失效了?
  • 8楼:疯狂的流浪 发表于 2011-03-21 22:28 回复此评论

    引用来自“feng157aaa”的评论

    刚试了,采集不到东西了,是不是代码失效了?
    可能源目标的代码有所改变 我有空看看
  • 9楼:孔祥赫 发表于 2011-06-09 18:44 回复此评论
    file_get_contents()这个函数不一定总能返回string,要是返回错误怎么办?
    应该这样
    @file_get_contents()
    并且判断返回为字符串再接着运行,否则循环下
    @file_get_contents()
  • 10楼:疯狂的流浪 发表于 2011-06-13 22:37 回复此评论

    引用来自“孔祥赫”的评论

    file_get_contents()这个函数不一定总能返回string,要是返回错误怎么办?
    应该这样
    @file_get_contents()
    并且判断返回为字符串再接着运行,否则循环下
    @file_get_contents()
    谢谢建议 确实
  • 11楼:summer_charlie 发表于 2011-09-19 10:57 回复此评论
    有一个开源的东西叫做 simple html dom 做此类事情挺不错的
  • 12楼:沙海 发表于 2011-09-30 15:50 回复此评论
    额,代码我还要仔细看看,刚入门的经过。
  • 13楼:轻舞凋零 发表于 2012-08-09 14:42 回复此评论
    太乱了。
  • 14楼:walden 发表于 2012-12-02 16:32 回复此评论
    我用file_get_contents怎么取不到这个网页的正文 只能取head部分
  • 15楼:walden 发表于 2012-12-02 16:36 回复此评论
    哦 这个网址过期了
  • 16楼:陈成彬 发表于 2014-03-06 23:58 回复此评论
    如果服务器关闭了url_open这段代码怎么运行
  • 17楼:inmyfree 发表于 2014-12-10 09:11 回复此评论
    楼主可以更新phpquery 版本啦
开源从代码分享开始 分享代码
疯狂的流浪的其它代码 全部(286)...