打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
一个简单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."节\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在线编辑演示 二维码 更多?


file_get_contents()这个函数不一定总能返回string,要是返回错误怎么办?
应该这样
@file_get_contents()
并且判断返回为字符串再接着运行,否则循环下
@file_get_contents()
谢谢建议 确实17楼:inmyfree 发表于 2014-12-10 09:11 回复此评论

11楼:summer_charlie 发表于 2011-09-19 10:57 回复此评论
有一个开源的东西叫做 simple html dom 做此类事情挺不错的

楼主可以更新phpquery 版本啦
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
preg 函数
PHP实现合并多个JS和CSS文件示例
PHP删除HTML标签
PHP使用file_get_contents()函数实现采集网页
preg_match 与 preg_match_all 函数
PHP中常用的写好的函数
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服