您好,欢迎访问一九零五行业门户网

PHP图书网站采集实例教程

在网上看到很多简单的采集教程,尤其是针对图书网站的比较多,但附带实例的并不多,在看了一篇针对八路中文网的抓取分析后,决定针对这个网站,写一个简单的抓取教程,并附带实例。由于俺偷懒,文中很多分析都是来自《利用php制作简单的内容采集器》,俺只是进一步优化了他的流程,并完成了代码实例的编写。
   采集程序其实并不难做,只要分析清楚流程,然后使用合适的正则来取到你想要的内容就可以了。废话不说了,教程开始:
   1.分析入口:
   多打开几本书后,可以发现书名的基本格式是:http://www.86zw.com/book/书号/index.aspx。于是得出:
代码:
$bookid='1888';
$index=http://www.86zw.com/book/.$bookid./index.aspx;//组合书目首页url
2.打开页面:
代码:
$contents=file_get_contents($index);
3.抓取图书信息页:
代码:
//抓取图书相关信息
preg_match_all(/(.*)/is,$contents,$arraytitle);
preg_match_all(/【点击阅读】/is,$contents,$arraylist);
unset($contents);
$title=$arraytitle[1][0];//书名
$list=http://www.86zw.com.trim($arraylist[1][0]);//列表页url
4.创建保存目录及文件:
代码:
//生成文本文档名称
$txt_name=$title..txt;
creatdir($bookid);//创建图片文件夹
writestatistic($title.\r\n,$txt_name);//图书标题写入文本文件
5.进入列表页:
代码:
//进入列表页
$list_contents=file_get_contents($list);
6.抓取列表页章节:
代码:
//进入列表页
//分章节抓块
preg_match_all(|(.*)  【分卷阅读】(.*)|uis,$list_contents,$block);
//计算总章节数
$regcount=count($block[0]);
7.分章节进行抓取:
代码:
//进入章节
for($pagebooknum=0;$pagebooknum    unset($zhang);
    unset($list_url);
    $zhang=$block[1][$pagebooknum];//章节标题
    writestatistic('章节:'.($pagebooknum+1).' '.$zhang.\r\n,$txt_name);//章节标题写入文本文件
    preg_match_all(|(.*)|uis,$block[3][$pagebooknum],$list_url);
    //进入页面
    for($listnum=0;$listnum        unset($book_url);
        unset($book);
        unset($book_contents);
        unset($book_time);
        unset($book_title);
        $book_time=$list_url[2][$listnum];//小章节更新信息
        $book_title=$list_url[3][$listnum];//小章节标题
        $book_url=preg_replace('index.shtm'si,$list_url[1][$listnum],$list);//小章节链接url
        writestatistic(($listnum+1).'.'.$book_title.'-'.$book_time.\r\n,$txt_name);//小章节标题写入文本文件
        $book=file_get_contents($book_url);
        //抓取图书内容
        preg_match_all(/(.*)