[转]利用PHP制作简单的内容采集器

Filed under: Spider | 2 Comments »
Posted on

出处:天极网

  采集器,通常又叫小偷程序,主要是用来抓取别人网页内容的。关于采集器的制作,其实并不难,就是远程打开要采集的网页,然后用正则表达式将需要的内容匹配出来,只要稍微有点正则表达式的基础,都能做出自己的采集器来的。

  前几天做了个小说连载的程序,因为怕更新麻烦,顺带就写了个采集器,采集八路中文网的,功能比较简单,不能自定义规则,不过大概思路都在里面了,自定义规则可以自己来扩展。

  用php来做采集器主要用到两个函数:file_get_contents()和preg_match_all(),前一个是远程读取网页内容的,不过只在php5以上的版本才能用,后一个是正则函数,用来提取需要的内容的。

  下面就一步一步来讲功能实现。
Read the rest of this entry »

[原创]图书网站采集实例教程

Filed under: Spider | 2 Comments »
Posted on

在网上看到很多简单的采集教程,尤其是针对图书网站的比较多,但附带实例的并不多,在看了一篇针对八路中文网的抓取分析后,决定针对这个网站,写一个简单的抓取教程,并附带实例。由于俺偷懒,文中很多分析都是来自《利用PHP制作简单的内容采集器》,俺只是进一步优化了他的流程,并完成了代码实例的编写。
采集程序其实并不难做,只要分析清楚流程,然后使用合适的正则来取到你想要的内容就可以了。废话不说了,教程开始:
1.分析入口:
多打开几本书后,可以发现书名的基本格式是:http://www.86zw.com/Book/书号/Index.aspx。于是得出:

  1. $BookId='1888';
  2. $index="http://www.86zw.com/Book/".$BookId."/Index.aspx";//组合书目首页URL

2.打开页面:

  1. $contents=file_get_contents($index);

3.抓取图书信息页:

  1. //抓取图书相关信息
  2. preg_match_all("/<div id=\"CrBookTitle\"><span class=\"booktitle\">(.*)<\/span><\/div>/is",$contents,$Arraytitle);
  3. preg_match_all("/【<a href=\"(.*)\"><font color=\"#CC0000\">点击阅读<\/font><\/a>】/is",$contents,$Arraylist);
  4. unset($contents);
  5. $title=$Arraytitle[1][0];//书名
  6. $list="http://www.86zw.com".trim($Arraylist[1][0]);//列表页URL

Read the rest of this entry »

PHP采集程序中常用的函数

Filed under: Spider | No Comments »
Posted on
  1. <?php
  2. //获得当前的脚本网址
  3. function get_php_url(){
  4.         if(!empty($_SERVER["REQUEST_URI"])){
  5.                 $scriptName = $_SERVER["REQUEST_URI"];
  6.                 $nowurl = $scriptName;
  7.         }else{
  8.                 $scriptName = $_SERVER["PHP_SELF"];
  9.                 if(empty($_SERVER["QUERY_STRING"])) $nowurl = $scriptName;
  10.                 else $nowurl = $scriptName."?".$_SERVER["QUERY_STRING"];
  11.         }
  12.         return $nowurl;
  13. }
  14. //把全角数字转为半角数字
  15. function GetAlabNum($fnum){
  16.         $nums = array("","","","","","","","","","");
  17.         $fnums = "0123456789";
  18.         for($i=0;$i<=9;$i++) $fnum = str_replace($nums[$i],$fnums[$i],$fnum);
  19.         $fnum = ereg_replace("[^0-9\.]|^0{1,}","",$fnum);
  20.         if($fnum=="") $fnum=0;
  21.         return $fnum;
  22. }

Read the rest of this entry »

Tags : , ,

snoopy——PHP版的网络客户端

Filed under: Spider | No Comments »
Posted on

官方的简介:
snoopy是一个php类,用来模仿web浏览器的功能,它能完成获取网页内容和发送表单的任务。
下面是它的一些特征:
1、方便抓取网页的内容
2、方便抓取网页的文字(去掉HTML代码)
3、方便抓取网页的链接
4、支持代理主机
5、支持基本的用户/密码认证模式
6、支持自定义用户agent,referer,cookies和header内容
7、支持浏览器转向,并能控制转向深度
8、能把网页中的链接扩展成高质量的url(默认)
9、方便提交数据并且获取返回值
10、支持跟踪HTML框架(v0.92增加)
11、支持再转向的时候传递cookies
Read the rest of this entry »