利用curl和正则表达式做的一个针对磨铁中文网非vip章节的小说抓取器,支持输入小说id下载小说。
依赖项:curl
可以简单的看下,里面用到了curl ,正则表达式,ajax等技术,适合新手看看。在本地测试,必须保证联网并且确保php开启curl的mode. getbookcontextbyid($id); $title=$st->getbooknamebyid($id); $cons=trim($cons); $t=explode( ,$title); //构造目录 $dir=array(); $dir=explode(_,$t[0]); $wzdir=$dir[0]; //书名称 作为目录名称 $wzchapter=$dir[1]; //第几章 //创建目录 $wzdir2=iconv(utf-8, gbk, $wzdir);//目录编码 注意这里保留对$wzdir字符串的引用,用来构造文件名,不能用此处,防止二次编码 if(!file_exists($wzdir2)){ mkdir($wzdir2); //创建目录 } //构造文件名 $wztitle=./.$wzdir./.$t[0]..txt; //保证保存的文件名称不是乱码 $wztitle=iconv(utf-8, gbk, $wztitle); $f=fopen($wztitle,w+); fwrite($f,$cons); echo $wzdir .$wzchapter.写入成功; fclose($f); } else{ $ids=self::getbookidsbyid($id); //这里服务器可能会掉线,所以最好用session记录循环 #for($i=$_session[$id._fid];$i #self::createbookbyid($id._.$ids[$_session[$id._fid]++]);//构造id #} for($i=$_session[$id._fid];$i self::createbookbyid($id._.$ids[$i]);//构造id } #echo
写入工作全部完成; #echo $id._.$ids[0].
; #var_dump($ids); } } /* 获取小说的所有id @param $id 文章id @return array; */ public static function getbookidsbyid($aid){ $ch= curl_init(); $url='http://www.motie.com/book/'.$aid./chapter; //注意这里的?可以获取最少匹配项 $ru='/[\s\s]*?[\s\s]*?.*?.*?/u';//正则表达式匹配 //设置选项,包括url curl_setopt($ch, curlopt_url, $url); curl_setopt($ch, curlopt_returntransfer, 1);//不自动输出内容 curl_setopt($ch, curlopt_header, 0);//不返回头部信息 curl_setopt($ch, curlopt_connecttimeout_ms, 0); //执行curl $output = curl_exec($ch); // 检查是否有错误发生 if(curl_errno($ch)){ echo 'curl error: ' . curl_error($ch); } //释放curl句柄 curl_close($ch); $arr=array(); preg_match_all($ru,$output,$arr,preg_pattern_order); return $arr[1]; } } ?>
复制代码
复制代码
下载小说啦输入磨铁中文网你想看到的小说id号就可以下载小说啦
复制代码