POST TIME:2020-04-10 20:34
DEDECMS自帶的采集功能,雖然比不上其他專業(yè)的采集軟件,但對(duì)比其他采集程序,在性能上還是非常不錯(cuò)。很多其他程序無法采集下來的網(wǎng)頁,使用DEDECMS可以采集得到。比如58同城首頁,使用discuz的下載函數(shù)采集過來的都是一片空白或者警告內(nèi)容,但是使用dedecms的下載完全可以下載下來。
DEDE采集程序原理
DEDECMS的采集原理很簡單: 通過PHP程序socket模擬HTTP請(qǐng)求,下載整張網(wǎng)頁的HTML。不過這里面有一個(gè)不足之處——不支持部分采集。如果我們僅僅要獲得對(duì)方網(wǎng)頁的標(biāo)題,卻下載了整張網(wǎng)頁。一兩張無所謂,但是大量的下載就會(huì)擠占服務(wù)器資源和帶寬。比如商務(wù)大陸網(wǎng)35dalucom的分類信息網(wǎng)站大全,該頻道含有600多分類信息網(wǎng)站,網(wǎng)站程序后臺(tái)自動(dòng)定期獲取這些網(wǎng)站的標(biāo)題,以判斷這些網(wǎng)站是否可以正常打開,內(nèi)容是否發(fā)生改變。如果使用dede的程序,直接默認(rèn)下載整張網(wǎng)頁而不是僅網(wǎng)頁HTML頭部部分,長期下去可想而知會(huì)擠占多少服務(wù)器資源。此時(shí)我們此處僅僅需要獲得對(duì)方網(wǎng)頁的標(biāo)題而已。
修改文件dedehttpdown.class.php
要讓DEDECMS實(shí)現(xiàn)部分采集的功能非常簡單,只需要修改采集程序文件dedehttpdown.class.php 中的2個(gè)地方即可。使用notepad++或者dreamweaver 打開 /include/dedehttpd.class.php:
(1)第118行 $this->m_html = '';背后加入$this->dataLimit = 0;
(2)第 285行$this->m_html .= fgets($this->m_fp,256); 背后加入 if($this->dataLimit > 0 && strlen($this->m_html) > $this->dataLimit) break; 保存即可。
使用方法:
$remoteURL = ‘http://www.***.com/info/fabu/’;
$dh = new DedeHttpDown();
$dh->OpenUrl($remoteURL);
$dh->dataLimit = 1024;
$remoteHTML = $dh->GetHtml();
我們只需要在 $dh->OpenUrl($remoteURL);背后加入 $dh->dataLimit = 1024;(你想采集的字節(jié)大小)即可。 通過這樣的方法,我們可以更節(jié)約服務(wù)器資源。本文出自www.35dalu.com商務(wù)大陸網(wǎng)分類信息平臺(tái),轉(zhuǎn)載請(qǐng)保留作者鏈接,謝謝。