首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

DedeCMS 3.1 分頁采集過濾規則實戰詳解(一):范例解析與基礎規則構建

     編輯:PHP 綜合知識

教程目標

以一個典型的「文字分頁」站點為藍本,通過變通改動,掌握通用分頁采集規則編寫方法。本文為系列第一篇,拆解官方范例的分頁區域取樣、過濾規則、完整代碼結構。

范例站點分析

  • 目標:https://www.xiaocao.com/text/class1/class1/200609/text_28623.html(多頁文章)
  • 分頁區域特征:<p align='center'><b><font color='red'>[1]</font>...頁次</b></p>

范例關鍵規則片段

分頁匹配 {dede:sppage}

{dede:sppage sptype='full'}<p align='center'><b><font color='red'>[1]</font>[var:分頁區域]</b>{/dede:sppage}

sptype='full' 表示采集所有分頁並合并內容。[var:分頁區域] 為動態捕獲的分頁鏈接列表區域。

標題提取

{dede:note field='dede_archives.title' value='[var:內容]' ...}
    {dede:match}<title>[var:內容]</title>{/dede:match}
    {dede:function}{/dede:function}
{/dede:note}

正文提取與過濾

{dede:note field='dede_addonarticle.body' value='[var:內容]' isunit='1' isdown=''}
    {dede:match}<script language="JavaScript" src="/AD/artcontent.js"></script>[var:內容]<table width="100%" border="0" cellspacing="0" cellpadding="0">{/dede:match}
    {dede:trim}<p align='center'><b>(.*)</b></p>{/dede:trim}
    {dede:function}{/dede:function}
{/dede:note}
  • match 定位正文起始(JS 廣告后)與結束(大表格前)。
  • trim 移除正文中的分頁導航條(居中加粗段落)。

完整范例規則代碼

{-- 節點基本信息 --}
{dede:item name='論壇范例_工作總結_成功(改)' imgurl='/upimg' imgdir='../upimg' language='gb2312' typeid='1' macthtype='string'}
{/dede:item}

{-- 采集列表獲取規則 --}
{dede:list source='var' sourcetype='archives' varstart='' varend=''}
    {dede:url value='https://www.xiaocao.com/text/class1/class1/200609/text_28623.html'}{/dede:url}
    {dede:need}{/dede:need}
    {dede:cannot}{/dede:cannot}
    {dede:linkarea}[var:區域]{/dede:linkarea}
{/dede:list}

{-- 網頁內容獲取規則 --}
{dede:art}
{dede:sppage sptype='full'}<p align='center'><b><font color='red'>[1]</font>[var:分頁區域]</b>{/dede:sppage}

{dede:note field='dede_archives.title' value='[var:內容]' comment='文章標題' isunit='' isdown=''}
    {dede:match}<title>[var:內容]</title>{/dede:match}
    {dede:function}{/dede:function}
{/dede:note}

{dede:note field='dede_archives.sortrank' value='[var:內容]' comment='排序級別' isunit='' isdown=''}
    {dede:match}{/dede:match}
    {dede:function}@me = time();{/dede:function}
{/dede:note}

{dede:note field='dede_archives.writer' value='[var:內容]' comment='文章作者' isunit='' isdown=''}
    {dede:match}{/dede:match}
    {dede:function}{/dede:function}
{/dede:note}

{dede:note field='dede_archives.litpic' value='[var:內容]' comment='縮略圖' isunit='' isdown=''}
    {dede:match}{/dede:match}
    {dede:function}@me = @litpic;{/dede:function}
{/dede:note}

{dede:note field='dede_archives.pubdate' value='[var:內容]' comment='發布時間' isunit='' isdown=''}
    {dede:match}{/dede:match}
    {dede:function}if(@me!="") @me = GetMkTime(@me); else @me = time();{/dede:function}
{/dede:note}

{dede:note field='dede_archives.senddate' value='[var:內容]' comment='錄入時間' isunit='' isdown=''}
    {dede:match}{/dede:match}
    {dede:function}@me = time();{/dede:function}
{/dede:note}

{dede:note field='dede_addonarticle.body' value='[var:內容]' comment='文章內容' isunit='1' isdown=''}
    {dede:match}<script language="JavaScript" src="/AD/artcontent.js"></script>[var:內容]<table width="100%" border="0" cellspacing="0" cellpadding="0">{/dede:match}
    {dede:trim}<p align='center'><b>(.*)</b></p>{/dede:trim}
    {dede:function}{/dede:function}
{/dede:note}

{dede:note field='dede_archives.source' value='[var:內容]' comment='文章來源' isunit='' isdown=''}
    {dede:match}{/dede:match}
    {dede:function}{/dede:function}
{/dede:note}
{/dede:art}

驗證對比

核心啟示

  1. 分頁規則靠「唯一特征」:范例中 <font color='red'>[1]</font> 是分頁區域的唯一標識。
  2. 正文 match 要「夾住」內容:前找唯一前導碼(如固定 JS),后找唯一結束碼(如大表格)。
  3. trim 專治「內部噪碼」:分頁導航、廣告、版權等混在正文中,用 trim 逐層剝離。
  4. 直接導入他人規則多半失效:版本差異、站點改版、編碼不同都會導致失效,必須學會自行分析調試。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved