[转载]dedecms 采集教程大全

[转载]dedecms 采集教程大全 – beike – JavaEye技术网站.

dedecms 采集教程大全

dedecms 采集节点 出现 Parse error the tag 8 fieldname=’source” is incorrect ! 错误的解决办法

SQL运行器中,执行以下代码:
update #@__co_exrule
set  ruleset=replace(ruleset,’fieldname’,’field name’)

或者

用 phpmyadmin 修改 table : dede_co_exrule

将 dede:fieldname=’source’ 改成 dede:field name=’source’ 即可解决

DEDECMS采 集基础教程】列表设置篇(一)
——————————————-

以dede的站长学院>网页制作基础>HTML/XHTML教程为例,地址是

http://www.dedecms.com/web-art/htmlbase/HTML/

一,打开dedecms,进入【采集节点管理】,新建一个节点,模型我们就选择
图1
图1

1、名称的话自己定义一个,主要是标识作用。
2、来源就自己定义个也可以,写上采集对象的信息也可以。
3、防盗链就看目标站点的有无刷新限制,有的话就设置一下超时时间,这个的话比较难判断,具体可以测试一下就知道。
4、页面编码就比较重要,可以在页面点击右键来看该页面的编码。

图2

图2

三,设置采集列表:
先看看要采集的信息列表:
图3
图3

来源网址很重要的。列表的获取就是从这里获取的。
自己打开:http://www.dedecms.com/web-art/htmlbase/HTML/
点击分页看下几个分页之间的URL有什么规则
由此不难看出其中的规则可以看下面的url例子:
http://www.dedecms.com/web-art/htmlbase/HTML/list_33 _【除此外其他都一样】.html
由此我们提取出来的规则就是换为变量值的形式
[url=http://www.dedecms.com/web-art/htmlbase/HTML/list_33_[var]http://www.dedecms.com/web-art/htmlbase/HTML /list_33_[var[/url]:分页].html
而变量起始值是1,结束值是3,就代表1至3的列表页了。

用正则匹配置网址就看本身是否有比较特定的文章网址字符。
下面的html范围就比较重要,采集的实际文章地址就是从这里获取的。
我们看原dede的列表。我们在浏览器里查看源文件。
查找以下代码:
图4

图4

上图中选中部分就是文章列表内容的开始处,而且在整个页面中是唯一的,因此我们就提取到了开始的HTML了
结束的HTML一般可以在列表下面的分页处找到,也是提取在正个页面源码中唯一标识的代码,看下图选中部分:
图5

图5

下面的【手工指定网址】就是你想特别采集什么网址,就直接填上即可。

DEDECMS采 集基础教程】采集规则篇(二)
在上一篇“【DEDECMS采集基础教程】列表设置篇(一)” 中介绍了列表设置的方法,接下来我们进入采集规则的设置,上篇的作用是获取到我们要采集的文章的地址,本篇是介绍如何从文章内容页面采集到文章的内容,也 是整个采集模型中最为核心的部分。
一,设置采集内容:
本篇将以《HTML语言剖析(六)清单标记》为例子,其链接地址是:
http://www.dedecms.com/web-art/htmlbase/HTML/20060703/30201.html
由于该测试文章没有分页,所以我们的配置选择的是“不分页”,因此,分页链接区域html也可以不用填写任何内容,如下图1所示:
图1
图1

有分页文章的设置方法将会在以后进行介绍。

二,内容字段的设置:
进入这一步,就开始对页面源码进行着重的分析了,采集无非是分析html页面的结构从而获取我们所需的内容。
所以这里就要求我们对HTML代码有一定的认识,最起码你也该看懂html代码的结构。
通过查看页面源文件,我们可以查看到页面的html代码。
1、文章标题:
最简单的方法是直接搜索这个标题在html代码中出现的位置,例如本篇例文的标题是:HTML语言剖析(六)清单标记,因此直接搜索出来在html代码总 总共出现有两处,第一处的代码是
<title>HTML语言剖析(六)清单标记 – 织梦内容管理系统</title>
第二处出现的代码是:
<!–资讯标题–>
<div class=”title”>
<h1>HTML语言剖析(六)清单标记</h1>
</div>
<!–相关信息–>
由上面两处不难得出,第二处对于我们来捕获该文的标题比较方便,因为不用再去写规则过滤掉一些我们不需要的信息。经过再次搜索全文HTML得 出,<h1>和</h1>在文中具有唯一性,因此可以作为获取标题的起止html代码,设置如下图2:
图2
图2

2、文章作者:
如果你不想用该文章上所显示的作者,也可以留空,dede会自动把文章的作者名给你添加上“佚名”
要采集这个文章作者也不难,经过分析后,可以看出文章作者在HTML代码中出现的位置,先看看下图3中选中部分代码
图3
图3

这样文章作者的采集范围我们就可以定下来,其设置如下图4所示:
图4
图4

*若文章作者中有包含超链接,其代码表现形式为“<a href=”” ……>文章作者</a>”,我们也可以采取过滤规则将其过滤掉,其规则如下:
{dede:trim}<a([^>]*)>{/dede:trim}
{dede:trim}</a>{/dede:trim}
设置方法可以见上图4中的过滤规则。
3、文章正文:
要找到文章正文在HTML代码中出现的位置,一个便捷的技巧就是先复制网页中正文的头几个字,然后在html代码中查找,就可以很快定位出来,这也可以方 便我们分析代码。
只要找出文章正文前的唯一性代码和文章结束时的唯一性代码,就可以抓出文章的正文。如下图5所示:
图5
图5

因为本文例文是没有分页内容,所以这里的“分页内容字段”不用选,若你想将文章正文中包含的多媒体资源(如图片、视频等)下载到本地服务器,你可以勾上 “下载字段里的多媒体资源”
过滤规则是比较重要的部分,通过正则规则可以将文章中的广告代码或LJ代码、干扰代码过滤掉,不采集下来,若人家文章中有挂了广告,我想你也不想免费给人 家挂广告吧。
至于过滤规则部分将再以后讲解。

剩下的文章来源,发布时间和录入时间等,都和以上的设置大同小异的,采集与否都无所谓,就看你的需要了。

三,至此,节点和规则的设置都完成了,接下来就是采集,下载和导出(入库)了。
最后再强调一点的就是必须懂HTML代码,最起码得能看懂目标页面的html代码的大概组成,知道文章的内容是存放在哪些代码之间。
下篇预告:进行采集篇,以图文的方式介绍如何进行采集,导出所采集到的数据入库

DEDECMS采 集基础教程】进行采集篇(三)
经过【DEDECMS采 集基础教程】列表设置篇(一)和【DEDECMS采集基础教程】采集规则篇(二)的介绍,我 们基本掌握了采集规则
的写发。这一篇我们将介绍如何进行采集以及采集后的入库。
一,选择节点,进入采集
先在我们刚建立好的采集节点前面打勾,然后点“采集”按钮,如图1
图1
图1

二,采集详细设置
图2
图2

这里可以设置每页采集的数据条数,一般来说不要设置太大,否则有可能导致系统处理不过来而部分采集不到,建议别超过15;线
程数是指每次有多少个线程同时进行采集,线程数的增加可以加快采集速度,但相应的会增加服务器资源的占用,所以请慎用;假
若目标站点有防刷新限制,此处就可以根据目标站点的防刷新限制时间进行设置,假如没有就默认0秒可以了。
附加选项这三个设置从字面上应该可以很容易理解,这就根据你的实际需要进行选择了。

三,采集后的处理
采集完成后,点击“查看种子网址”进入查看采集的结果。
这里罗列出了采集回来的内容。可以点击进去查看采集到的内容有无问题的。具体看图3
图3
图3

温馨提醒:
1、在这个列表中有些数据的是否下载有可能显示的是“未下载”,引起的原因可能是网络的原因引起也有可能是你设置的采集条数
过大导致的。出现这样的情况我们仅需要在上面采集的“附加选项中”选择“仅下载未下载内容”,然后再进行一次采集即可。
2、在“节点的种子网址”列表中点击“[源网址]”可进入查看该条采集到的数据所在的原来页面
3、在“节点的种子网址”列表中点击“内容标题”这一栏的超链接可进入查看采集到的数据是否正确,同时也可以修改里面的内容
,最后记得保存即可,见图4

图4
图4

这里需要注意的是:“dede_archives.sortrank”和“dede_archives.pubdate”这两个字段的内容一般不要修改
4、假如要删除部分不满意的数据,可以在列表中在你要删除的数据前面打勾,然后按“删除所选网址”即可,这里支持批量操作
四,将采集的数据入库
这里有多个入口:
1、在节点管理列表中选择刚才采集的那个节点,然后点击下面的“导出数据按钮”进入入库操作
2、直接点击我们刚才采集的那个节点进入采集内容管理页面,点击右上方的“导出采集内容”按钮即可进入入库操作
3、选择节点后点击“采集”按钮进入采集页面,在右上方有“导出数据”按钮,点击后也可进入入库操作页面
进入后的入库操作页面见图5

图5
图5

首先选择要导入到的栏目,按“请选择”那里即可在弹出的窗口中选择你需要导入的栏目
发布选项这里一般默认即可,除非你不想马上发布。
每批导入默认是30条,这里修改与否都无所谓,因为导入操作的速度还是蛮快的
附带选项一般选“排除重复标题”,至于自动生成HTML那个选项建议先别生成,因为我们还要去批量提取摘要和关键字,这就是后
话了。
上面的配置OK以后,接下来就是按“提交”让系统自己去处理了。完成下面会有提示信息。

到这里,采集教程就基本结束,接下来我会介绍一些过滤规则和分页采集教程。喜欢的朋友敬请关注。

DEDECMS采 集基础教程】过滤规则篇(四)
经过前面三篇的介绍,对于dede的采集我们也有基本 的了解和操作能力,对于采集简单的内容来说也足够用了。然而对于大多数网站来说,现在广告是网站收入的一个重要来源,因此在网页中常会嵌入广告代码。我们 在采集的时候,如何将其过滤掉,从而避免了自己帮别人免费挂广告呢?又例如某些文章里面某些关键词有了他们自己网站上的其他文章链接,你是否愿意让你辛苦 采集回来的文章里包含了他的链接?这一切,只需简单的过滤规则,即可给你一篇干净的文章。
dede的过滤规则并不难写,其写法如下面
{dede:trim}这里就是要过滤的内容{/dede:trim}
如果你要过滤的内容比较简单的代码,完全可以直接在“{dede:trim}”和“{/dede:trim}”之间写上,如果比较复杂的就要用到正则 了。
1、例如采集中去除内容里的超链接的规则如下:
{dede:trim}<a([^>]*)>{/dede:trim}
{dede:trim}</a>{/dede:trim}
假如要将所有超链接内容都去除,规则是:{dede:trim}<a([^>]*)>([^<]*)</a> {/dede:trim}
这两个规则的不同通过下面代码来解释
例如文章代码中包含着如下内容:<a href=”#”>超链接</a>
通过第一个规则,我们采集来的结果是:超链接
通过第二个规则,我们采集来的结果是:空白,即是将所有内容都过滤掉了。
2、过滤广告
对于广告来说,过滤规则就得针对html中看到的内容使用规则了,例如某些广告仅仅是引用某个JS文件,例如
<script src=’/plus/ad_js.php?aid=4′ language=’JavaScript’></script>
这样的规则只需
{dede:trim}<script(.*)>{/dede:trim}
{dede:trim}</script>{/dede:trim}
如果某些广告的内容是JS代码写在<script></script>区间里的,例如GG的广告,那么过滤规则应该是:
{dede:trim}<script>(.*)</script>{/dede:trim}
3、下面是一些常识用的过滤规则
{dede:trim}<!–(.*)–>{/dede:trim}
{dede:trim}<select([^>]*)>([^>]*)</select>{/dede:trim}
{dede:trim}<option([^>]*)>([^>]*)</option>{/dede:trim}
{dede:trim}<select([^>]*)>{/dede:trim}
{dede:trim}</select>{/dede:trim}
{dede:trim}<param([^>]*)>{/dede:trim}
{dede:trim}<embed([^>]*)>([^>]*)</embed>{/dede:trim}
{dede:trim}<embed([^>]*)>{/dede:trim}
{dede:trim}</embed>{/dede:trim}
{dede:trim}<object([^>]*)>([^>]*)</object>{/dede:trim}
{dede:trim}<object([^>]*)>{/dede:trim}
{dede:trim}</object>{/dede:trim}
{dede:trim}<OBJECT([^>]*)>([^>]*)</OBJECT>{/dede:trim}
{dede:trim}<OBJECT([^>]*)>{/dede:trim}
{dede:trim}</OBJECT>{/dede:trim}
{dede:trim}<iframe([^>]*)>([^>]*)</iframe>{/dede:trim}
{dede:trim}<iframe([^>]*)>{/dede:trim}
{dede:trim}</iframe>{/dede:trim}
{dede:trim}<IFRAME([^>]*)>([^>]*)</IFRAME>{/dede:trim}
{dede:trim}<IFRAME([^>]*)>{/dede:trim}
{dede:trim}</IFRAME>{/dede:trim}
{dede:trim}<font([^>]*)>([^<]*)</font>{/dede:trim}
{dede:trim}<font([^>]*)>{/dede:trim}
{dede:trim}</font>{/dede:trim}
{dede:trim}<a([^>]*)>([^<]*)</a>{/dede:trim}
{dede:trim}<a([^>]*)>{/dede:trim}
{dede:trim}</a>{/dede:trim}
{dede:trim}<td([^>]*)>([^>]*)</td>{/dede:trim}
{dede:trim}<td([^>]*)>{/dede:trim}
{dede:trim}</td>{/dede:trim}
{dede:trim}<tr([^>]*)>([^>]*)</tr>{/dede:trim}
{dede:trim}<tr([^>]*)>{/dede:trim}
{dede:trim}</tr>{/dede:trim}
{dede:trim}<tbody([^>]*)>([^>]*)</tbody>{/dede:trim}
{dede:trim}<tbody>{/dede:trim}
{dede:trim}</tbody>{/dede:trim}
{dede:trim}<table([^>]*)>([^>]*)</table>{/dede:trim}
{dede:trim}<table([^>]*)>{/dede:trim}
{dede:trim}</table>{/dede:trim}
{dede:trim}<span([^>]*)>{/dede:trim}
{dede:trim}</span>{/dede:trim}
{dede:trim}</IFRAME>{/dede:trim}
{dede:trim}<script>(.*)</script>{/dede:trim}
{dede:trim}<script(.*)>{/dede:trim}
{dede:trim}</script>{/dede:trim}

———————————–
对于下面这些规则就请慎用
———————————–
{dede:trim}<div(.*)>{/dede:trim}
{dede:trim}</div>{/dede:trim}
{dede:trim}<stong>{/dede:trim}
{dede:trim}</stong>{/dede:trim}
{dede:trim}<div(.*)>(.*)</div>{/dede:trim}
{dede:trim}<center(.*)>{/dede:trim}
{dede:trim}</center>{/dede:trim}
{dede:trim}<p(.*)>{/dede:trim}
{dede:trim}</p>{/dede:trim}
{dede:trim}<span(.*)>{dede:trim}
{dede:trim}</span>{dede:trim}
{dede:trim}<img(.*)>{/dede:trim}
{dede:trim}<div(.*)>{/dede:trim}
{dede:trim}</div>{/dede:trim}
以上就是本篇要介绍的内容,正则也许并不是每处都用得上,但当你了解其写法后,自己也可以写出一些更加适合自己使用的规则出来。

DEDECMS采 集基础教程】分页采集篇(五)
分页采集,一直是困扰很多站长的问题,对于文章内容的 采集来说,并不难,最难的莫过于分页采集。因为多种多样的分页格式,在采集的时候怎样去取分页的区域,怎样才不会采集回来重复的内容,这确实是个头疼的问 题。有次johnny在写采集规则的时候就因为疏忽,结果采集回来的文章内容重复了,所以johnny决定单独写此文来。在写本文的时候,johnny也 思考过该怎么去写好本文,毕竟在这方面johnny也不是懂很多,希望能和各位一起学习研究。
接下来就以一个例子来分析,本次的例子网址是:
http://www.ladysfashion.cn/dress/dapei/20080321/1319.html
1、打开本文例子网址,把页面拉到下面,可以看到其分页,见下面图1:

图1
图1

这是典型的DEDE分页,有上下页,也列出了所有的分页。对于这种分页,我们在采集规则时,在“文档是否分页”一项中选择的是“全部列出的分页列表”。例 如某些文档的翻页仅有上下也方式或者仅仅列出部分页码,其余内容用“…”或“更多”这种方式,那这项应选择的是“上下页形式或不完整的分页列表”。
对于分页类型的判断,我们应当多打开几个文章看看其翻页方式,再来决定选择分页方式,特别有些文章仅有单页并没有多页内容,他的翻页也就相应的没有,往往 我们很容易的以为他的文章并没有分页,导致某些有分页的文章采集不到多页内容。分页方式的选择决定了采集回来的内容的完整性。
下面以一个错误的例子看看选择错误导致采集回来的内容重复:
在采集本文例子页面的时候,这里我选择的是“上下页形式或不完整的分页列表”,测试的时候是正常可以采集到内容,但当真正采集的时候,发觉采集回来的内容 重复了,采集回来的结果看下图2:

图2
图2

若将上面例子的方式改为“全部列出的分页列表”,这样采集回来的结果见下图3:

图3
图3

从图2跟图3的对比,后者不会产生重复内容,而且在文章首行也不会多出“#e#”这个来。
举出这两个例子也是为说明此处选择的重要性。
2、分页链接区域匹配规则
这部分的选择也是有一定的技巧。假如有些文章有单页形式,也有多页形式,这时我们应打开有多页的文章 ,然后查看其源文件。
例如本文例子,我们首先要找到其分页区域HTML代码,见下图4选中部分:

图4
图4

接下来是选出具有唯一标识的代码作为分页链接区域的起始HTML,这点类似于其他部分的采集。本文例子的配置如下图5:

图5
图5

3、规则写好以后,在“采集节点管理”页面中的“测试”按钮可以测试采集规则能否采集到内容。但对于分页采集,该功能并不能测试出分页采集规则写得对不 对。所以最好的方式是把采集规则的来源网址中分页变量起始值改为1页,然后实际采集,再看看采集回来的内容是否正确,若有错误就修改分页采集部分,再清空 节点采集到的内容,再采集,如此反复直至完美为止。

至此,采集教程也就告一段落了,也许以后有时间johnny会再整理出采集模型的相关教程。若有什么问题,欢迎到本站给我留言一起研究学习或者到dede 官方论坛去交流,那里的高手很多。

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏