程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> 初級的用php寫的采集程序

初級的用php寫的采集程序

編輯:PHP綜合

可以先用這個采集然後在用帝國處理
<?php
####################################################################################
#作者:9elong
#網站:個人小站不值一提
#時間:2007-01-01
#聲明:僅用於學習php之用。
#功能:采集單頁面圖片。
#說明:3個示范表單已經寫好正則用來示范。沒有任何功能說明,一切都在源代碼裡。附加論壇圖片采集正則示范
####################################################################################
//把圖片從信息頁抓取下來的函數
function  getimg($url,$n,$key,$imgqian,$imgbiao,$titlekey)
{
                //$key圖片地址正則
                //$titlekey圖片標題正則
                //$imgqian圖片地址前綴
                //$imgbiao圖片地址特殊標識
                global  $n;
                global  $msg;
                global  $result;
                global  $imgadd;
                global  $title;
                $msg=file_get_contents($url);
                $key=str_replace("{圖片地址}","(.+)",$key);
                $key="|".$key."|isU";
                preg_match_all($key,$msg,$result);
                $c=count($result[0]);
                for($i=0;$i<$c;$i++)
                {
                                $img=$result[0][$i]."<br>";
                                if(ereg("^.*".$imgbiao.".*$",$img))
                                {
                                                $img=str_replace($imgbiao,$imgqian.$imgbiao,$img);
                                                preg_match("|http://(.+)jpg|isU",$img,$img);
                                                $imgadd[$n]=$img[0];
                                                //echo  "<img  src=".($img[0])."><br>";
                                                $n++;
                                }
                                elseif(ereg("^.*jpg.*$",$img))
                                {
                                                preg_match("|http://(.+)jpg|isU",$img,$img);
                                                $imgadd[$n]=$img[0];
                                                if($img[0]!="")
                                                $n++;
                                }
                                unset($img);
                }                                
                                $titlekey=str_replace("{圖片標題}","(.+)",$titlekey);
                                $titlekey="|".$titlekey."|isU";
                                preg_match($titlekey,$msg,$title);
                                //echo  $title[0];
                                return  $title;
                return  $msg;
                return  $result;
                return  $n;
                return  $imgadd;
}
####################################################################################
#不支持file_get_contents()函數可以使用下面的替換
#$i=0;
#$handle=@fopen($url,"rb");
#while  (!@feof($handle))
#{
#                $buffer[$i]=  @fgets($handle,  4096);
#                $i++;
#}
#fclose($handle);
#$msg=join("",$buffer);
####################################################################################
if($_GET['act']=="getimgadd"&&$_POST['url']!="")
{
                $url=$_POST['url'];
        getimg($url,"0",$_POST['key'],$_POST['imgqian'],$_POST['imgbiao'],$_POST['titlekey']);
####################################################################################
        //獲取分頁
                if($_POST['getpage']=="是")
        {
                                $_POST['page']=str_replace("{分頁地址}","(.+)",$_POST['page']);
                $page="|".$_POST['page']."|isU";
                //echo  $page;
        preg_match_all($page,$msg,$presult);
                if($_POST['pc']==""||$_POST['pc']=="全部")
                        $pc=count($presult[0]);
                else
                                $pc=$_POST['pc'];
                if($_POST['pc']>count($presult[0]))
                                $pc=count($presult[0]);
                for($i=1;$i<$pc;$i++)
                {
                                $pageurl=$presult[0][$i];
                                //echo  $pageurl."<br>";
                                if(ereg("^.*[1-9].*$",$pageurl))
                                {
                                                $pageurl=str_replace("<a  href="","<a  href="".$_POST['imgqian'],$pageurl);
                                                $pagekey=str_replace("{關鍵地址}","(.+)",$_POST['pagekey']);
                                                $pagekey="|".$pagekey."|isU";
                                                preg_match($pagekey,$pageurl,$N3[$i]);
                                                //echo  ($N3[$i][0])."<br>";
                                                getimg($N3[$i][0],$n,$_POST['key'],$_POST['imgqian'],$_POST['imgbiao'],$_POST['titlekey']);
                                }
                }
        }
####################################################################################
        echo  "圖片集〖".$title[1]."〗".$n."張圖片被抓取<br><a  href='?act='>返回首頁</a><br>";

                while(list($num,$var)=each($imgadd))
                {
                                if($_POST['showtype']=="圖片")
                                {
                                                echo  "<img  src='".$var."'><br>";
                                }
                                else
                                echo  $var."<br>";
                }
####################################################################################
                //exit();
}
?>
實例1(信息頁有分頁,使用了簡單的分頁正則):
<FORM  METHOD=POST  ACTION="?act=getimgadd">
輸入圖片地址<INPUT  TYPE="text"  NAME="url"  size=80  value='http://www.pp132.com/n835c17.shtml'><br>
圖片地址正則<INPUT  TYPE="text"  NAME="key"  size=80  value='<img{圖片地址}>'><br>
圖片地址前綴<INPUT  TYPE="text"  NAME="imgqian"  size=80  value='http://www.pp132.com/'><br>
圖片地址標識<INPUT  TYPE="text"  NAME="imgbiao"  size=80  value='upload'><br>
圖片標題正則<INPUT  TYPE="text"  NAME="titlekey"  size=80  value='<H1  class=aTitle>{圖片標題}</H1></DIV>'><br>
分頁地址正則<INPUT  TYPE="text"  NAME="page"  size=80  value='<a  href="{分頁地址}shtml">.[0-9]'><br>
分頁地址模式<INPUT  TYPE="text"  NAME="pagekey"  size=80  value='http://{關鍵地址}shtml'><br>
<SELECT  NAME="getpage">
<option  value="是"    selected="selected">獲取分頁信息</option>
<option  value="否">不要分頁信息</option>
</SELECT><br>
<SELECT  NAME="pc">
<option  value="1"    selected="selected">獲取1頁</option>
<option  value="2">獲取2頁</option>
<option  value="3">獲取3頁</option>
<option  value="4">獲取4頁</option>
<option  value="5">獲取5頁</option>
<option  value="全部">獲取全部</option>
</SELECT><br>
<SELECT  NAME="showtype">
<option  value="圖片"    selected="selected">直接顯示圖片</option>
<option  value="文字">直接顯示地址</option>
</SELECT><br>
<INPUT  TYPE="submit">
</FORM><br>
實例2(信息頁沒有分頁,所以分頁正則為空):
<FORM  METHOD=POST  ACTION="?act=getimgadd">
輸入圖片地址<INPUT  TYPE="text"  NAME="url"  size=80  value='http://zy.muwen.com/pic/89/2007/01/01/131721.htm'><br>
圖片地址正則<INPUT  TYPE="text"  NAME="key"  size=80  value='<IMG  src="/UpLoad{圖片地址}jpg"'><br>
圖片地址前綴<INPUT  TYPE="text"  NAME="imgqian"  size=80  value='http://zy.muwen.com/'><br>
圖片地址標識<INPUT  TYPE="text"  NAME="imgbiao"  size=80  value='UpLoad'><br>
圖片標題正則<INPUT  TYPE="text"  NAME="titlekey"  size=80  value='<span  id="_ctl0_TitleLabel"  class="Title">{圖片標題}</span></TD>'><br>
分頁地址正則<INPUT  TYPE="text"  NAME="page"  size=80  value=''><br>
分頁地址模式<INPUT  TYPE="text"  NAME="pagekey"  size=80  value=''><br>
<SELECT  NAME="getpage">
<option  value="是">獲取分頁信息</option>
<option  value="否"    selected="selected">不要分頁信息</option>
</SELECT><br>
<SELECT  NAME="pc">
<option  value="1"    selected="selected">獲取1頁</option>
<option  value="2">獲取2頁</option>
<option  value="3">獲取3頁</option>
<option  value="4">獲取4頁</option>
<option  value="5">獲取5頁</option>
<option  value="全部">獲取全部</option>
</SELECT><br>
<SELECT  NAME="showtype">
<option  value="圖片"    selected="selected">直接顯示圖片</option>
<option  value="文字">直接顯示地址</option>
</SELECT><br>
<INPUT  TYPE="submit">
</FORM><br>
實例3(信息頁沒有分頁,所以分頁正則為空,圖片為絕對地址,所以圖片地址前綴為空):
<FORM  METHOD=POST  ACTION="?act=getimgadd">
輸入圖片地址<INPUT  TYPE="text"  NAME="url"  size=80  value='http://www.6642.com/Disp/9936.htm'><br>
圖片地址正則<INPUT  TYPE="text"  NAME="key"  size=80  value='<P><IMG{圖片地址}"></P>'><br>
圖片地址前綴<INPUT  TYPE="text"  NAME="imgqian"  size=80  value=''><br>
圖片地址標識<INPUT  TYPE="text"  NAME="imgbiao"  size=80  value='UpLoad'><br>
圖片標題正則<INPUT  TYPE="text"  NAME="titlekey"  size=80  value='<div  align="right"><b>{圖片標題}</b></div></td>'><br>
分頁地址正則<INPUT  TYPE="text"  NAME="page"  size=80  value=''><br>
分頁地址模式<INPUT  TYPE="text"  NAME="pagekey"  size=80  value=''><br>
<SELECT  NAME="getpage">
<option  value="是">獲取分頁信息</option>
<option  value="否"    selected="selected">不要分頁信息</option>
</SELECT><br>
<SELECT  NAME="pc">
<option  value="1"    selected="selected">獲取1頁</option>
<option  value="2">獲取2頁</option>
<option  value="3">獲取3頁</option>
<option  value="4">獲取4頁</option>
<option  value="5">獲取5頁</option>
<option  value="全部">獲取全部</option>
</SELECT><br>
<SELECT  NAME="showtype">
<option  value="圖片"    selected="selected">直接顯示圖片</option>
<option  value="文字">直接顯示地址</option>
</SELECT><br>
<INPUT  TYPE="submit">
</FORM><br>


華聲論壇圖片為附件http://bbs.hnol.net/dispbbs2.asp?boardID=50&ID=336436

圖片地址正則:upload=jpg{圖片地址}upload

圖片地址標識:bbs

圖片標題正則:帖子主題</B>:{圖片標題}</th>


華聲論壇圖片為外鏈http://bbs.hnol.net/dispbbs2.asp?boardID=50&ID=336253

圖片地址正則:img]{圖片地址}/img

圖片地址標識:jpg

圖片標題正則:帖子主題</B>:{圖片標題}</th>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved