1. 程式人生 > >php採集(php小偷)程式設計教程

php採集(php小偷)程式設計教程

天涯風雲 釋出於2007-06-03 11:54:08
如何採集?
如何採集?
    通常採集程式,都是有的放矢的。也就是需要有目標網站,蒐集一些你需要的採集內容的網站,分別對其html程式碼進行分析,找出規律性的東西,依據你要採集的特定內容,寫出php程式碼。採集到你要的東西以後,你可以選擇自己需要的存放方式。比如直接生成html頁面,或是放進資料庫,作進一步處理或是存放成特定的形式,以備後用。
    針對目標網站,我們可以採用以下方式:
1.使用file()函式,獲取目標頁面檔案流,轉換成字串,作進一步處理.
  一個範例函式:

CODE:

//獲取目標頁面檔案流並轉換成字串形式
function openfile($url)
{
if(file($url)){
        $str = file($url);
        $count = count($str);
        for ($i=0;$i<$count;$i++){
        $file .= $str[$i];
                        
                                 }
        return $file;
              } else { die("檔案開啟失敗!"); }
}
用法舉例:
$getstr=openfile("http://86enjoy.com");
//getsrt是一個字串,你可對它作進一步處理。
2.使用file_get_contents()函式,該函式可以直接將獲取的web頁面內容轉換成字串

CODE:

$getstr=file_get_contents("http://86enjoy.com");
//getsrt就是一個字串,你可對它作進一步處理。
3.使用Microsoft.XMLHTTP元件方式。不過該元件需要windows平臺支援,它是windows的一個元件,php程式以com形式呼叫它。
範例程式:

CODE:

<?php
//Microsoft.XMLHTTP元件使用範例程式get.php
//作者:天涯風雲
$url=$_GET['id'];
$xmlhttp = new COM("Microsoft.XMLHTTP") or die("無法建立Microsoft.XMLHTTP元件!");
$xmlhttp->open("GET",$url,False, "", "");
$xmlhttp->setRequestHeader("content-Type","text/html");
$xmlhttp->send();
$body=$xmlhttp->responseText;
echo $body;
?>
用法:get.php?id="目標頁面"
4.使用fsockopen()函式,獲取檔案流
範例程式:

CODE:

function request_url($url,$method='POST') {
$url = parse_url($url); //解析url地址,取得host,path,port,query等
if (!$url) return "couldn't parse url";
if (!isset($url['port'])) { $url['port'] = ""; }
if (!isset($url['query'])) { $url['query'] = ""; }
//連線伺服器
$fp = fsockopen($url['host'], $url['port'] ? $url['port'] : 80);
if (!$fp) return "不能連線".$url['host']."伺服器";
//傳送請求
fputs($fp, sprintf("$method %s%s%s HTTP/1.0/n", $url['path'], $url['query'] ? "?" : "", $url['query']));
fputs($fp, "Host: $url[host]/n");
fputs($fp, "Content-type: application/x-www-form-urlencoded/n");
fputs($fp, "Connection: close/n/n");
//獲得請求後返回的內容
$line = fgets($fp,1024);
if (!eregi("^HTTP/1/.. 200", $line)) return;
$results = "";
while(!feof($fp)) {
$line = fgets($fp,1024);
$results .= $line;
}
fclose($fp);
return $results;
}

函式用法:
$getstr=request_url("目標頁面");
//getstr是一個字串,你可對它作進一步處理。
[ 本帖最後由 天涯風雲 於 2007-6-3 12:14 編輯 ]
天涯風雲 釋出於2007-06-03 12:24:33
採集範例程式
採集範例程式1
獲取sina網上的某個城市的天氣資訊
//sinatianqi.php

CODE:

<?php
/* 此程式是從新浪網的天氣網頁[url]http://php.weather.sina.com.cn/search.php?city=[/url]某個城市名,取得天氣資訊*/
ob_start();  //啟動輸出緩衝
function request_url($url,$method='POST') {
$url = parse_url($url); //解析url地址,取得host,path,port,query等
if (!$url) return "couldn't parse url";
if (!isset($url['port'])) { $url['port'] = ""; }
if (!isset($url['query'])) { $url['query'] = ""; }
//連線伺服器
$fp = fsockopen($url['host'], $url['port'] ? $url['port'] : 80);
if (!$fp) return "不能連線".$url['host']."伺服器";
//傳送請求
fputs($fp, sprintf("$method %s%s%s HTTP/1.0/n", $url['path'], $url['query'] ? "?" : "", $url['query']));
fputs($fp, "Host: $url[host]/n");
fputs($fp, "Content-type: application/x-www-form-urlencoded/n");
fputs($fp, "Connection: close/n/n");
//獲得請求後返回的內容
$line = fgets($fp,1024);
if (!eregi("^HTTP/1/.. 200", $line)) return;
$results = "";
while(!feof($fp)) {
$line = fgets($fp,1024);
$results .= $line;
}
fclose($fp);
return $results;
}
//獲得從其它網頁傳送過來的url(帶查詢字串)
if (!$_REQUEST['url']) {
echo "請新增一個url";
exit;
}else{
$url=$_REQUEST['url'];
}
$content=request_url($url); //取得請求後的網頁內容
$start=strpos($content,"<!-- 天氣狀況 begin -->");//取得天氣預報的擷取段
$end=strpos($content,"<!-- 天氣狀況 end -->");
$len=$end-$start;
$b=substr($content,$start,$len); //擷取得指定內容
//從上面的擷取段中取得城市今日天氣預報的擷取段
$sub_start=strpos($b,"<div class=/"City_Data/">");  
$sub_end=strpos($b,"<div class=/"Weather_SM/">");
$len2=$sub_end-$sub_start;
$c=substr($b,$sub_start,$len2);
$d=split("/n",$c); //去掉換行符
//print_r($d);
$e="";
foreach ($d as $key=>$value){
$value=strip_tags($value);  //去掉html標記
$e.=$value;
if ($key==2) {
  $e.="<br>";
}
}
echo $e;
ob_end_flush();
?>   
程式執行情況:
測試
[ 本帖最後由 天涯風雲 於 2007-6-3 12:26 編輯 ]
天涯風雲 釋出於2007-06-03 12:29:08
採集範例程式
採集範例程式

採集範例程式2:取得tom的天氣

CODE:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>天氣預報-天氣查詢-中國美女網</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312"><LINK
href="images/home.css" rel=stylesheet>
<META content="MSHTML 6.00.3790.2759" name=GENERATOR></HEAD>


<BODY bgColor=#ffffff leftMargin=0 topMargin=0 marginheight="0" marginwidth="0">
<center><div>
<TABLE cellSpacing=0 cellPadding=0 width=774 align=center border=0>
  <TBODY>
  <TR>
    <TD><IMG height=100 src="templates/default/images/top1.jpg" width=770></TD>
  </TR></TBODY></TABLE>
<TABLE height=28 cellSpacing=0 cellPadding=0 width=774 align=center border=0>
  <TBODY>
  <TR>
    <TD vAlign=center align=middle background=templates/default/images/tt_r4_c1.jpg><A
      href="http://www.86mm.com.cn/" target=_blank>首頁</A></TD>
    <TD vAlign=center align=middle width=2
      background=templates/default/images/tt_r4_c1.jpg><IMG height=22
      src="templates/default/images/tt_r5_c8.jpg" width=1></TD>
    <TD vAlign=center align=middle background=templates/default/images/tt_r4_c1.jpg><A
      href="http://www.huazhongpc.com/html/zouguangtoupai/"
    target=_blank>走光偷拍</A></TD>
    <TD vAlign=center align=middle width=2
      background=templates/default/images/tt_r4_c1.jpg><IMG height=22
      src="templates/default/images/tt_r5_c8.jpg" width=1></TD>
    <TD vAlign=center align=middle background=templates/default/images/tt_r4_c1.jpg><A
      href="http://www.huazhongpc.com/html/jiqingyouhuo/"
    target=_blank>激情誘惑</A></TD>
    <TD vAlign=center align=middle width=2
      background=templates/default/images/tt_r4_c1.jpg><IMG height=22
      src="templates/default/images/tt_r5_c8.jpg" width=1></TD>
    <TD vAlign=center align=middle background=templates/default/images/tt_r4_c1.jpg><A
      href="http://www.huazhongpc.com/html/qingchunnvhai/"
    target=_blank>清純女孩</A></TD>
    <TD vAlign=center align=middle width=2
      background=templates/default/images/tt_r4_c1.jpg><IMG height=22
      src="templates/default/images/tt_r5_c8.jpg" width=1></TD>
    <TD vAlign=center align=middle background=templates/default/images/tt_r4_c1.jpg><A
      href="http://www.huazhongpc.com/html/meinvzipai/"
    target=_blank>美女自拍</A></TD>
    <TD vAlign=center align=middle width=2
      background=templates/default/images/tt_r4_c1.jpg><IMG height=22
      src="templates/default/images/tt_r5_c8.jpg" width=1></TD>
    <TD vAlign=center align=middle background=templates/default/images/tt_r4_c1.jpg><A
      href="http://www.huazhongpc.com/html/mingxingxiezhen/"
    target=_blank>明星寫真</A></TD>
    <TD vAlign=center align=middle width=2
      background=templates/default/images/tt_r4_c1.jpg><IMG height=22
      src="templates/default/images/tt_r5_c8.jpg" width=1></TD>
    <TD vAlign=center align=middle background=templates/default/images/tt_r4_c1.jpg><A
      href="http://www.huazhongpc.com/html/xingaijiankang/"
    target=_blank>性愛健康 </A></TD>
   
    <TD vAlign=center align=middle width=2
      background=templates/default/images/tt_r4_c1.jpg><IMG height=22
      src="templates/default/images/tt_r5_c8.jpg" width=1></TD>
    <TD vAlign=center align=middle background=templates/default/images/tt_r4_c1.jpg><A
      href="http://www.huazhongpc.com/html/mianfeidianying/" target=_blank>免費電影</A></TD>
    <TD vAlign=center align=middle width=2
      background=templates/default/images/tt_r4_c1.jpg><IMG height=22
      src="templates/default/images/tt_r5_c8.jpg" width=1></TD>
    <TD vAlign=center align=middle background=templates/default/images/tt_r4_c1.jpg><A
      href="http://www.huazhongpc.com/html/gaoxiaotupian/" target=_blank>搞笑圖片</A></TD>
  <TD vAlign=center align=middle width=2
      background=templates/default/images/tt_r4_c1.jpg><IMG height=22
      src="templates/default/images/tt_r5_c8.jpg" width=1></TD>
    <TD vAlign=center align=middle background=templates/default/images/tt_r4_c1.jpg><A
      href="http://www.huazhongpc.com/tianqi.php" target=_blank>天氣預報</A></TD>
   </TR></TBODY></TABLE>

<TABLE style="MARGIN-TOP: 2px" cellSpacing=0 cellPadding=0 width=774
background=images/t2_05.gif border=0>
  <TBODY>
  <TR><td>
<SCRIPT language=JavaScript>
<!---
today = new Date();
var hours = today.getHours();
var minutes = today.getMinutes();
var seconds = today.getSeconds();
var timeValue = "<FONT COLOR=#000000>" + (hours);
timeValue += ((minutes < 10) ? "<FONT COLOR=#000000>:</FONT></BLINK>0" : "<FONT COLOR=#000000>:</FONT></BLINK>") + minutes+"</FONT></FONT>";
function initArray(){
this.length=initArray.arguments.length
for(var i=0;i<this.length;i++)
this[i+1]=initArray.arguments[i] }
var d=new initArray("<font color=#0000ff>星期天","<font color=#000000>星期一","<font color=#000000>星期二","<font color=#000000>星期三","<font color=#000000>星期四","<font color=#000000>星期五","<font color=#FEFF80>星期六");
document.write("<font color=#000000>",today.getYear(),"年","",today.getMonth()+1,"月","",today.getDate(),"日 </FONT>",d[today.getDay()+1]," "); //-->
</SCRIPT>
<font color=#0000ff>(友情提醒:按"Ctrl鍵+F"查詢你所在城市的天氣情況)</font><form name="form1" action="http://weather.tq121.com.cn/detail.php">
                       <input name="city" type="text" size="20">
                          <input type="submit" value="搜尋">
                      </form>
</TD></TR>   

</TBODY></TABLE>
<TABLE style="MARGIN-TOP: 2px" cellSpacing=0 cellPadding=0 width=774
background=images/t2_05.gif border=0>
  <TBODY>
  <TR>
    <TD width=20><IMG height=21 src="images/t2_04.gif" width=13></TD>
    <TD class=c1 width=153>中國天氣查詢 </TD>
    <TD width=14><IMG height=21 src="images/t2_06.gif" width=14></TD>
    <TD align=right background=images/t2_07.gif>
        
資料來源:<A
      href="http://www.tq121.com.cn/"
      target=_blank>中央氣象臺</A></TD>
    <TD width=7><IMG height=21 src="images/t2_08.gif"
  width=7></TD></TR></TBODY></TABLE>
<DIV id=guonei_h24 name="guonei_h24">
<TABLE cellSpacing=1 cellPadding=1 width=774 bgColor=#ababab border=0>
  <TBODY>

<?php
$str = file("http://tq.tom.com/china/index.html");
$count = count($str);
for ($i=0;$i<$count;$i++){
    $file .= $str[$i];
}
$tomtq = explode("<table width=/"774/" border=/"0/" cellspacing=/"1/" cellpadding=/"1/" bgcolor=/"#ABABAB/">",$file);
$tomtq = explode("</table>",$tomtq[1]);
$tomtq= $tomtq[0];
echo $tomtq;
?>

  </TBODY></TABLE>
  <TABLE cellSpacing=1 cellPadding=0 width=774 align=center border=0>
  <TBODY>
  <TR>
    <TD bgColor=#bbf1ff>
      <TABLE cellSpacing=5 cellPadding=0 width=774 border=0>
        <TBODY>
        <TR>
          <TD align=middle><A href="http://www.86mm.com.cn/"
            target=_blank>聯絡我們</A> <FONT color=#000099>-</FONT>  <A
            onclick="this.style.behavior='url(#default#homepage)';this.setHomePage('http://www.86mm.com.cn');return false;"
            href="http://www.86mm.com.cn/#">設定首頁</A> <FONT color=#000099>-</FONT>
            <A href="http://sms.25vod.com/public/fullscreen/golink.php?smsid=107"
            target=_blank>廣告服務</A> <FONT color=#000099>-</FONT> <FONT
            color=#ff0000><A href="http://sms.25vod.com/public/fullscreen/golink.php?smsid=107"
            target=_blank>友情連結</A></FONT></TD>
        </TR>
        <TR>
          <TD
            align=middle>本站內容來自於網際網路搜尋和網友改編、上傳,本站提供的視訊、音樂片斷僅供網友測試使用,<BR>如發現相關內容侵犯了您的權益,請及時聯絡我們,本站將會及時予以刪除<BR>
          聯絡QQ:231734624
            聯絡E-mail:[email protected]<BR>
            Copyright ? 2005-2008 86mm.com.cn Inc. All
            rights reserved. 華中美女網 版權所有 <BR><script language="javascript" type="text/javascript" src="http://js.users.51.la/882050.js"></script>
<noscript><a href="http://www.51.la/?882050" target="_blank"><img alt="我要啦免費統計" src="http://img.users.51.la/882050.asp" style="border:none" /></a></noscript><a href=http://www.miibeian.gov.cn/>鄂ICP備06012810號</a><BR>
            </TD>
        </TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
  
</DIV>
</CENTER></BODY></HTML>
示範頁面:http://86mm.com.cn/tianqi.php
[ 本帖最後由 天涯風雲 於 2007-6-5 19:42 編輯 ]
天涯風雲 釋出於2007-06-03 12:37:12
一些常用的函式

CODE:

// ####################### 獲取檔案流並轉換成字串 #######################
function openfile($url)
{
if(file($url)){
        $str = file($url);
        $count = count($str);
        for ($i=0;$i<$count;$i++){
        $file .= $str[$i];
                        
                                 }
        return $file;
              } else { die("檔案開啟失敗!"); }
}
// ####################### 切分字串 #######################
function cut($start,$end,$file){
        $content=explode($start,$file);
        $content=explode($end,$content[1]);
        return  $content[0];
}
// ####################### 清除垃圾程式碼 #######################
function del($start,$end,$content){
       $del=cut($start,$end,$content);
       $content=str_replace($del,"",$content);
       $content=str_replace($start.$end,"",$content);
       return $content;
      
     
}
// ####################### 分析域名 #######################
function getname($url)
{
$referer = preg_replace("/https?:////([^//]+).*/i", "//1", $url);
$referer = str_replace("www.", "", $referer);
return $referer;
}

// ####################### 清除HTML程式碼table #######################
function clstable($content)
{
$clscontent= preg_replace("/<table[^>]*?>.*?<//table>/si", "", $content);
return $clscontent;
}
// ####################### 清除HTML程式碼script #######################
function clsscript($content)
{
$clscontent= preg_replace("/<script[^>]*?>.*?<//script>/si", "", $content);
return $clscontent;
}
// ####################### 清除HTML程式碼div #######################
function clsdiv($content)
{
$clscontent= preg_replace("/<div[^>]*?>.*?<//div>/si", "", $content);
return $clscontent;
}

// ####################### 清除HTML程式碼iframe #######################
function clsifr($content)
{
$clscontent= preg_replace("/<IFRAME[^>]*?>.*?<//IFRAME>/si", "", $content);
return $clscontent;
}

// ####################### 清除HTML程式碼tr,td #######################
function clstrtd($content)
{
$clscontent= preg_replace("/<td[^>]*?>.*?<//td>/si", "", $content);
$clscontent= preg_replace("/<tr[^>]*?>.*?<//tr>/si", "", $clscontent);
$clscontent= preg_replace("/<tr[^>]*?>/si","",$clscontent);
$clscontent= preg_replace("/<td[^>]*?>/si","",$clscontent);
$clscontent= preg_replace("/<//tr>/si","",$clscontent);
$clscontent= preg_replace("/<//td>/si","",$clscontent);
return $clscontent;
}
// ####################### 清除HTML程式碼超連結 #######################
function clsa($content)
{
$clscontent= preg_replace("/<a[^>]*?>.*?<//a>/si", "", $content);
return $clscontent;
}
// ####################### 徹底清除所有HTML程式碼#######################
function clearhtml($content)
{
$search = array ("'<script[^>]*?>.*?</script>'si",  // 去掉 javascript
                 "'<[///!]*?[^<>]*?>'si",           // 去掉 HTML 標記
                 "'([/r/n])[/s]+'",                 // 去掉空白字元
                 "'&(quot|#34);'i",                 // 替換 HTML 實體
                 "'&(amp|#38);'i",
                 "'&(lt|#60);'i",
                 "'&(gt|#62);'i",
                 "'&(nbsp|#160);'i",
                 "'&(iexcl|#161);'i",
                 "'&(cent|#162);'i",
                 "'&(pound|#163);'i",
                 "'&(copy|#169);'i",
                 "'&#(/d+);'e");                    // 作為 PHP 程式碼執行
$replace = array ("",
                  "",
                  "//1",
                  "/"",
                  "&",
                  "<",
                  ">",
                  " ",
                  chr(161),
                  chr(162),
                  chr(163),
                  chr(169),
                  "chr(//1)");
$text = preg_replace ($search, $replace, $content);
return $text;
}
// ####################### 寫入快取檔案 #######################
function writetocache($cachedir,$cachename, $cachedata = '') {
    $cachedir = './'.$cachedir.'/';
    $cachefile = $cachedir.$cachename.'.php';
    if(!is_dir($cachedir)) {
                        @mkdir($cachedir, 0777);
          }
    if(!is_dir($cachedir)) {
      @mkdir($cachedir, 0777);
    }
    if(@$fp = fopen($cachefile, 'wb')) {
      @fwrite($fp, $cachedata);
      @fclose($fp);
      @chmod($cachefile, 0777);
    } else {
      echo 'Can not write to cache files, please check directory ./cache/ .';
      exit;
    }
}
// ####################### 獲取檔案裡的html連結 #######################
function geturl($re,$ufile,$rep1,$rep2){
preg_match_all ($re,
    $ufile,
    $out, PREG_PATTERN_ORDER);
$result=count($out[1]);
$i=0;
while($i<$result)
{
$outs[$i]=str_replace($rep1,$rep2,$out[1][$i]);
$i++;
}
//合併相同的連結並重新索引...
$reout=array();
$reout=resetar($outs);
return $reout;
}
天涯風雲 釋出於2007-06-03 13:01:53
對一個目標網站的全面採集
對一個目標網站的全面採集,包括以下幾個步聚:
1。分析首頁或分類頁的html原始碼
2。依據分析,寫出正則表示式,採集首頁或分類頁面裡的連結
3。將連結作為目標頁面,進行二次採集。
4.將採集的內容作進一步處理。
[ 本帖最後由 天涯風雲 於 2007-6-3 13:27 編輯 ]
天涯風雲 釋出於2007-06-03 13:28:42
範例:對86mm.com.cn網站的全面採集
範例:對86mm.com.cn網站的全面採集
一,對首頁原始碼分析,找出連結規律
該網站首頁原始碼檢視:http://86mm.com.cn/files.php?id=http://86mm.com.cn
分析有效連結:

CODE:

<TR><TD><a href="html/xingaijiankang/8104.html" target="_blank" title="男性生殖保健">
男性生殖保健</a></TD></TR>
現在我們就要找出形如"html/xingaijiankang/8104.html"類似字串的所有連結。
[ 本帖最後由 天涯風雲 於 2007-6-3 13:39 編輯 ]
天涯風雲 釋出於2007-06-03 13:37:18
範例:對86mm.com.cn網站的全面採集
二,寫正則表示式,找出首頁裡的所有連結
關鍵字串:|<a href="html/xingaijiankang/8104.html" target="_blank"|
正則匹配規則:
$re="|<a href=/"(html///w+///d{1,5}/.html)/" target=/"_blank/"|U";
找所有連結,並顯示結果:

CODE:

<?php
// ####################### 獲取檔案裡的html連結 #######################
function geturl($re,$ufile,$rep1,$rep2){
preg_match_all ($re,
    $ufile,
    $out, PREG_PATTERN_ORDER);
$result=count($out[1]);
$i=0;
while($i<$result)
{
$outs[$i]=str_replace($rep1,$rep2,$out[1][$i]);
$i++;
}
//合併相同的連結並重新索引...
$reout=array();
$reout=resetar($outs);
return $reout;
}
set_time_limit(0);

$url=$_GET['http://86mm.com.cn'];
$ufile=file_get_contents($url);
$re="|<a href=/"(html///w+///d{1,5}/.html)/" target=/"_blank/"|U";
$rep1="";
$rep2="";

$urls=geturl($re,$ufile,$rep1,$rep2);
$result=count($urls);

echo "共找到".$result."個連結<br>";
$i=0;
while($i<$result)
{

$outurl[$i]="http://86mm.com.cn/".$urls[$i];
echo $outurl[$i]."<br>";
$i++;
}
?>
[ 本帖最後由 天涯風雲 於 2007-6-3 13:49 編輯 ]
3.JPG

3.JPG

天涯風雲 釋出於2007-06-03 14:19:09
範例:對86mm.com.cn網站的全面採集
三,對內容頁面html原始碼分析,採集標題和內容(本範例主要採集頁面標題和內容)
檢視原始碼:http://86mm.com.cn/files.php?id= ... einvzipai/8061.html
分析:

CODE:

<TITLE>世界上最搞笑的屁股⌒-mianfeidianying,中國美女網,性愛,免費,短片,視訊,惡搞,搞笑圖片</TITLE> 這部分可以用cut("<TITLE>","</TITLE>",$file)直接獲取,然後把後面多餘的尾巴換掉。
主要內容部分集中在

CODE:

<td height="15" valign="top">..............<!--流量交換-->這一區間內,我們可以再次cut()一下,取得內容。
這樣標題我內容就全獲取了。。
具體實現程式碼:

CODE:

<?php
// ####################### 切分檔案流 #######################
function cut($start,$end,$file){
        $content=explode($start,$file);
        $content=explode($end,$content[1]);
        return  $content[0];
}
// ####################### 清除垃圾程式碼 #######################
function del($start,$end,$content){
       $del=cut($start,$end,$content);
       $content=str_replace($del,"",$content);
       $content=str_replace($start.$end,"",$content);
       return $content;
      
     
}
set_time_limit(0);

$url=$_GET['id'];
$files=file_get_contents($url);
$title=cut("<TITLE>","</TITLE>",$files);
//清除標題後面的多餘字串
$title=str_replace("-mianfeidianying,中國美女網,性愛,免費,短片,視訊,惡搞,搞笑圖片","",$title);
$content=cut("<td height=/"15/" valign=/"top/">","<!--流量交換-->"
,$files);
//清除內容裡的一句廣告詞
$content=del("<font color=red>","</font>",$content);

echo $title."<br>";
echo $content;
?>
這樣,我們就可以獲取一個頁面內的標題和內容了。。
[ 本帖最後由 天涯風雲 於 2007-6-3 14:29 編輯 ]
4.GIF

4.GIF

天涯風雲 釋出於2007-06-03 14:58:50
範例:對86mm.com.cn網站的全面採集
四,批量獲取首頁裡所有連結的標題和內容,並以php檔案的形式儲存。
  下面,我們要用程式依次開啟86mm.com.cn首頁裡所有連結,並取得相應的標題和內容,存為php檔案,當然你可以生成其它格式的檔案或放進資料庫裡,這以個人需要而定。
程式碼如下:

CODE:

<?php
// ####################### 獲取檔案裡的html連結 #######################
function geturl($re,$ufile,$rep1,$rep2){
preg_match_all ($re,
    $ufile,
    $out, PREG_PATTERN_ORDER);
$result=count($out[1]);
$i=0;
while($i<$result)
{
$outs[$i]=str_replace($rep1,$rep2,$out[1][$i]);
$i++;
}
//合併相同的連結並重新索引...
$reout=array();
$reout=resetar($outs);
return $reout;
}
// ####################### 切分檔案流 #######################
function cut($start,$end,$file){
        $content=explode($start,$file);
        $content=explode($end,$content[1]);
        return  $content[0];
}
// ####################### 清除垃圾程式碼 #######################
function del($start,$end,$content){
       $del=cut($start,$end,$content);
       $content=str_replace($del,"",$content);
       $content=str_replace($start.$end,"",$content);
       return $content;
      
     
}
// ####################### 清除數組裡的重複值並重新索引陣列 #######################
function resetar($outs){
$reout=array();
$reouts=array();
$reout=array_unique($outs);
foreach($reout as $key=>$value){
array_push($reouts,$value);
}
return $reouts;
}
// ####################### 寫入快取檔案 #######################
function writetocache($cachedir,$cachename, $cachedata = '') {
    $cachedir = './'.$cachedir.'/';
    $cachefile = $cachedir.$cachename.'.php';
    if(!is_dir($cachedir)) {
                        @mkdir($cachedir, 0777);
          }
    if(!is_dir($cachedir)) {
      @mkdir($cachedir, 0777);
    }
    if(@$fp = fopen($cachefile, 'wb')) {
      @fwrite($fp, "<?php/r/n//天涯風雲,版權所有/r/n//Created on /r/n/r/n".$cachedata."/r/n/r/n?>");
      @fclose($fp);
      @chmod($cachefile, 0777);
    } else {
      echo 'Can not write to cache files, please check directory ./cache/ .';
      exit;
    }
}
// ####################### 建立快取檔案 #######################
function content_recache($cachedir,$i,$title,$content) {
  
  $contents = "/$catecache = array(/r/n";
    $contents.="/t'title' => '".$title."',/r/n'content'=> '".$content."'/r/n";
  $contents .= ");";
  writetocache($cachedir,$i,$contents);
echo "./".$cachedir."/".$i.".php檔案建立成功!<br>";
}
set_time_limit(0);

$url='http://86mm.com.cn';
$ufile=file_get_contents($url);
$re="|<a href=/"(html///w+///d{1,5}/.html)/" target=/"_blank/"|U";
$rep1="";
$rep2="";

$urls=geturl($re,$ufile,$rep1,$rep2);
$result=count($urls);

echo "共找到".$result."個連結<br>";
$i=0;
while($i<$result)
{

$outurl[$i]="http://86mm.com.cn/".$urls[$i];//對取得的連結加域名,得到實際地址
echo $outurl[$i]."<br>";
$files[$i]=file_get_contents($outurl[$i]);
$title[$i]=cut("<TITLE>","</TITLE>",$files[$i]);
$title[$i]=str_replace("-mianfeidianying,中國美女網,性愛,免費,短片,視訊,惡搞,搞笑圖片","",$title[$i]);
$content[$i]=cut("<td height=/"15/" valign=/"top/">","<!--流量交換-->"
,$files[$i]);
//清除內容裡的一句廣告詞
$content[i]=del("<font color=red>","</font>",$content[i]);

//將取得的標題和內容寫入檔案
content_recache("86mm",$i,$title[$i],$content[$i]);
$i++;
}

?>
示例中,將取得的標題和內容存為php陣列形式的檔案,主要為了檔案做後期處理,或寫入資料庫,或生成html文件都可以

相關推薦

php採集php小偷程式設計教程

天涯風雲 釋出於2007-06-03 11:54:08 如何採集?如何採集?    通常採集程式,都是有的放矢的。也就是需要有目標網站,蒐集一些你需要的採集內容的網站,分別對其html程式碼進行分析,找出規律性的東西,依據你要採集的特定內容,寫出php程式碼。採集到你要的東西以後,你可以選擇自己需要的存放方式

PHP系列十二數據庫抽象層pdo

pdo1、數據庫抽象層pdo(1)、PDO(php data object)擴展類庫為php訪問數據庫定義了輕量級的、一致性的接口它可以支持mysql,postgresql,oracle,mssql等多種數據庫(2). PDO的安裝編輯php.ini文件:– extension=php_pdo.dll– ex

LAMP平臺搭建-PHP終結篇

PHP LAMP PHP知識部分LAMP平臺的構成組件:1、Linux操作系統,Linux操作系統是整個LAMP架構的基礎部分,提供用於支撐Web站點的操作系統,為其他的組件提供了更好的穩定性、兼容性2、Apache網站服務器,作為LAMP架構的前端,功能強大、穩定性良好3、MySQL數據庫服務器,為

一文解決 PHP靜態區域性/全域性變數、auto(區域性/全域性)變數、類中static

一、靜態區域性變數、auto區域性變數、類中static 這是我的概念: 類屬性,類方法:是給類使用的,在類中使用 self::和 static:: 代表,供呼叫 例項屬性,例項方法:是給例項使用的,在類中使用 this-> 代表,供呼叫 <?php /**

程式設計字典codingdict.comJava教程

java教程 Java 教程 Java 簡介 Java 開發環境配置 Java 基礎語法 Java 物件和類 Java 基本資料型別 Java變數型

搭建PHP環境XAMPP+PhpStorm,並設定斷點除錯XDebug+Chrome

二、安裝XAMPP 網址:XAMPP 如圖所示:預設情況下,Server裡面全部選中,由於本人電腦上已經安裝過MySQL,因此這裡取消了MySQL選項。本人的安裝路徑是F:\software; 安裝之後的介面如下: 三、安裝XDebug 3

php斷點除錯工具------NetBeans+Xdebug除錯php方法測試成功

@原文url:https://www.cnblogs.com/feichengwulai/articles/6252039.html@原文url:http://www.cnblogs.com/dcb3688/p/4608015.html@netbeans官方除錯php程式碼說

Apache+PHP+PythonDjango框架搭建成功

前天把Apache+PHP伺服器搭好了,還通過配置VirtualHost實現了“分流”,也就是為今天上Django框架做好了準備。 現在我的成果是這樣的: (1) /etc/apache2/sites-available/000-default.conf 中配置Virtua

linux上搭建PHP環境php+mysql+apache

一、獲取安裝包 PHP下載地址:http://cn.php.net/distributions/php-7.1.10.tar.gz Apache下載地址:http://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.28.

那些年我們踩過的php持續更新

原因:在第一次迴圈時,陣列的指標指向下一個元素,得到的陣列值為2,這個時候,php陣列內部會複製一份臨時的陣列$tmp, $tmp的指標指向第二個元素,後續呼叫current($a),實際上是取的臨時陣列$tmp的當前值,而$tmp的指標始終指向第二個元素,所以輸出結果永遠是2

PHP筆記PHP常用測試程式碼

//查詢php頁面載入時間和執行 $start = microtime(true); //code $finish = microtime(true); printf(" total run: %.2f s <br> memory usage: %

centos6.5和centos7如何搭建php環境包括php7

首先我們先檢視下centos的版本資訊: #適用於所有的linux lsb_release -a #或者 cat /etc/redhat-release #又或者 rpm -q centos-release 以上三種任意一種均可檢視centos的版本資訊。 這裡我們

gamemaker studio2 Arena Shooter競技場射擊圖文教程 5 教程搬運加自己經驗

表現 img 分數 結果 期待 ima 自己 camera cnblogs 6月22日 20:20 這部分是繪制文本 得分機制 首先創建空對象 追蹤成績 空對象就是不鏈接精靈 添加創造事件 增加個記錄分數的變量 添加繪制事件 我們需要顯示一個記錄分數的標誌

gamemaker studio2 Arena Shooter競技場射擊圖文教程 6 教程搬運加自己經驗

images 21點 效果 添加 謝謝 技術 ges 自己 事件 哈羅,我又來了。 6月27號 20點33 今天學習添加聲音 要想實現聲音效果還需要在代碼中添加 上面是素材的導入 哦是在敵人對象步事件中 解釋看圖 然後就是添加隨機音高 讓我們聽到遊戲聲音是

gamemaker studio2 Arena Shooter競技場射擊圖文教程 8 教程搬運加自己經驗

設置 -1 精靈 blog 操作 事件 搬運 計時器 src 隨機生成敵人 先設置好敵人層 創建新的實例層 命名 操作的是 調整層次為 記得把原來實例層中的敵人實例刪除 然後創建新的產卵對象 添加創造事件 這倆個函數是設置精靈的縮放 一個沿x軸縮放 一個沿y軸縮放

Xcode -OC版Storyboard教程 1.5:Segues的介紹

con .cn 自動 參數 bar atom 繼承 彈出 rop 1 - 現在,讓我們創建一個場景使用戶可以自己增加新的選手進入列表,在 Player 界面中拖入一個 Bar Button,放置在導航欄的右側,在屬性監視器中將它的 System Item 改為『add』,這

c#創建Windows service Windows 服務基礎教程

log 腳本 mage src installer als highlight syn project 轉自:http://www.cnblogs.com/sorex/archive/2012/05/16/2502001.html 1)創建Windows service項

UMLRational Rose安裝教程【載百度經驗】

對話 需要 ddc 開始菜單 dex 鼠標右鍵 ins 安裝路徑 fix ---恢復內容開始--- Win7安裝rational rose2007教程 在UML建模的眾多工具中,IBM公司的rational rose建模工具可以說是最好用的建模工具了。哪我們

GitHub網頁版簡明教程

GitHub(網頁版)簡明教程 GitHub官網:GitHub 一、註冊 進入GitHub官網,介面如下圖所示。 根據提示一步一步完成註冊。 二、使用 1、登入使用者主頁,介面如下圖所示。 2、點選上圖中的綠色按鈕“New repository”建立新的知識庫,點選後

sublime markdown環境下畫圖 使用Graphviz配置教程

下載安裝Graphviz 官網連結 http://www.graphviz.org/。在下使用的是Windows,安裝完成之後把 bin 目錄加入環境變數,在CMD中用dot -V檢驗時候安裝配置完畢 安裝外掛 安裝外掛能夠實現預覽,然而在windows上安裝外掛沒有什麼軟用