火车头内容采集器教程

论坛类采集事例

  来源论坛:http://www.discuz.net/ >> 代码交流
  目标网站:http://127.0.0.1/ >> 默认论坛(本机架设)
  其它备注:不下载附件,将内容转为UBB格式在线发布到目标网站。仅采集第一楼的贴子内容!
  步骤:

  1.新建站点,填写站点基本信息:
  

  站点名称一栏输入:Discuz
  站点网址一栏输入:http://www.discuz.net/
  站点描述一栏输入:Discuz! 官方论坛

  2.整站内容规则:
  我们要采集代码交流版块的内容,首先我们进入他的代码交流版块的任意一个贴子内,查看网页源码内容,得出以下源码:

  我发贴的标题是:“孤魂编写火车头程序教程说明贴”,查看源文件,找到此内容所在的位置,可能会找到很多处有,我推荐使用一处为Discuz的标题所在的通用源码:

  你可以多查看几篇贴子,将源码对比一下,从这里看出从“标题:”到“</td></tr>”之间就是文章标是的所有内容,所以我们双击标题标签栏打开编辑窗口,在开始字符串处输入“标题:”;在结束字符串处输入“</td></tr>”,然后点击确定完成标题标签设置:

  

   下一步从源码当中查找发贴的内容段代码,需要查找出整个一楼的源码,多查看几篇贴子将源码比较,我们会发现所有的内容开始于:“<div style="font-size: 12px">”这里,结束于:“<tr><td align="right">”。所以我们可以双击内容标签栏,分别输入开始与结束字符串,然后点击确定完成设置,以下可以在页面测试栏输入来源的网址,测试以上设置是否正确,得出以下源码:


  因为以上源码里面有一些无效的内容,我们需要将其屏蔽或替换。火车头采集器已经集成了大多数的HTML标签自动替换成UBB的功能,如fontsize;<br>;<p>等标签,所以我们最主要屏蔽或替换的内容为不必要文字或图片等:首先我们看源码,我在发贴的时候已经选择了使用CODE和QUOTE的UBB标签,根据以上源码,我们需要删除的内容有,建议在做完以下每一步后,点击确定然后测试一次,以便及时发现错误的设置:
  开始与结束字符串及内容排除或替换支持变量,只需要使用“(*)”代替变化的内容即可。
   ⑴. “<div(*)>”和“</div>”因为此处有些div标签不是完整的,所以没有使用系统选项里面的直接删除div标签的选项,完成后测试内容。

  ⑵.
  这一段因为当存在多个code标签在同一贴内时,“code0”将是一个变量,所以我们的屏蔽规则可以写为:

  ⑶.继续向下看,内容里面还有多余字符“CODE:”;“QUOTE:”及“[<i> 本帖最后由 孤魂 于 2006-12-26 19:44 编辑 </i>]”,前两段内容完全排除,后面一段因为里面的“孤魂”及时间为变量,所以我们排除内容写:“[<i> 本帖最后由(*)编辑 </i>]”。

  ⑷.屏蔽附件属性片的源码
   里面的变量有好几个,不一下的说,屏蔽的的规则为
   紧跟着后面是附件下载地址:
   如果需要直接发布下载地址到你的网站上,如果需要屏蔽则规则写为:
   如果需要替换,则需要加上来源网址的地址,将
   替换成为

  ⑸.因为Discuz对图片做了JS效果处理:
   所以我们要将此段替换成img的ubb标签格式:
   替换成"[img]";
   替换成“[/img]” 。测试后我们发现图片的地址为
   所以我们还得加上完整的图片地址:将
   替换成

  ⑹.做完以上步骤,内容基本可以独立出来了,剩下的就是相关贴子搜索及其它会员的签名栏,屏蔽:
   及

  ⑺.最后测试规则是否正确,然后保存完毕.我刚才所做的规则我已经导出>>点击下载此站点规则
  

  3.新建任务,在任务列表栏选择刚才所见的站点Discuz,然后点击鼠标右键>>选择从该站点新建任务:
  
  在新弹出来的窗口,原来有讲过,有三个页面,在第一个页面设置网址选项,因为我们是先采集网址在从网址列表得到内容,所以我们设置采集深度为1。点击向导添加>>因为我们要采集多页的内容,所以我们可以选择批量/多页,然后输入网址规则
   在数字变化范围里面填入从2到10,选择倒序发贴,然后点击添加,会在全部地址栏查看到刚才添加的网址选项,点击完成添加结束。
  然后设置页面内选定区域采集网址内容,查看网页列表页面源码,贴子页面链接范围从
  开始,从

   结束, 为了防止采集回复贴的内容,我们还需要设置文章内容页面必须包含与不包含的内容。我们分析他的贴子的链接网址,可以发现所有以“(*)-1-1.html”结尾的贴子为贴子的首页,所以我们设置文章内容页面网址必须包含“(*)-1-1.html”。我们查看他的源码得到他的网站编码为GBK编码,所以我们设置来源站的编码为“Default”,然后点击开始测试网址验证以上设置是否正确。
  

  4.以下设置完成,我们点击内容规则,因为在新建站点时,我们设置了Discuz网站的通用采集规则,所以在这里,此部可以跳过,如果有修改的地方请按照相关内容修改,在此处修改内容不影响整站内容规则。

  5.数据发布方式,我们选择方式三:Web在线发布到网站,点击启用,使用分局发布方式,然后点击自定义全局发布方式,打开Web方式在线发布向导。
  
  我的目标网站是Discuz5.0论坛程序,我们选择好相应的CMS模块,目标站网页编码及发表方式,然后选择目标系统需要登录,并填写网站的根网址,用户名及密码,在点击登录,当系统提示登录成功后,刷新列表,在刷新列表当中,我们选择需要发布的目标版块,然后可以点击测试模块,如果确认模块可以正确发表,此步可以跳过,然后点击何在设置完成Web方式在线发布向导。
  因为刷新列表设置同一CMS程序不同风格的刷新列表规则不一样,如果系统不法自动列表,可以选择使用自定义分类,填上正确的ID即可发表。

  6.完成以上设置,会返回到新建任务的窗口,在右上角输入任务名称,然后点击保存按钮完成所有设置,保存后完毕关闭此窗口。
  

  7.开始采集,在任务列表栏选择刚才建议的任务“代码交流”,然后点击主要工具栏里面的开始按钮程序将自动完成采集: