火车采集器/DedeCMS文章模块

来自站长百科
跳转至: 导航、​ 搜索

火车采集器 | 安装 | 主程序 | 子程序 | 应用拓展 | 模块开发 | FAQ

首先安装好DedeCms 5.1  本例测试的DedeCMS网站地址:http://127.0.0.1/dede51

这个模块使用内置浏览器登陆,所以不用写“登陆设置”那块,现在直接写文章发布那块,这个分两步,先来获得栏目ID,栏目ID是文章系统里的栏目对应的一个值,可以是数字也可以是其它。这个分类ID也可以不用获得,如果知道栏目ID是多少的话可以直接在发布配置那里填写对应值或是将[分类ID]用自己的标签代替,以后注意在做规则里对应写一下栏目ID的值就可以了。

  • 获得栏目ID值

要做的是找到一个包含栏目ID的页面,里边可以提取到栏目ID和栏目名子,一般最好找select的,用option的下拉菜单来做栏目的页面,DeDeCms现在用了很多js来调用栏目,可以找一个,现在以/dede/catalog_tree.php?f=form1&opall=1&v=typeid&bt=selbt1&c=0为例,看具体页面情况。 

Locoy DedeCMS1.jpg
图1 生成静态页中选择栏目列表

这里有所有的栏目,代码也较简单,可以看一下,关于栏目的代码如下

<table width='98%' border='0' align='center' cellpadding='0' cellspacing='0'>
  <tr> 
    <td height='24' background='img/mtbg1.gif'  style='border-left: 1px solid #2FA1DB; border-right: 1px solid #2FA1DB;'>
		 <strong>√请在要选择的栏目打勾</strong>
	  <input type='checkbox' name='nsel' id='selid0' class='np' onClick="ReSel(0,'请选择...')">不限栏目
	</td>
  </tr>
  <tr bgcolor='#EEFAFE'> 
    <td align='center' bgcolor="#eefef0" id='items1'> 
<dl class='topcc'>
  <dd class='dlf'><img style='cursor:hand' onClick="LoadSuns('suns1',1,0);" src='img/tree_explode.gif' width='11' height='11'></dd>
  <dd class='dlr'>test1 <input type='checkbox' name='selid' id='selid1' class='np' onClick="ReSel(1,'test1')"> </dd>
</dl>
<div id='suns1' class='sunct'>  <table class='sunlist'>
   <tr>
     <td><img src='img/tree_list.gif'> test12 <input type='checkbox' name='selid' id='selid4' class='np' onClick="ReSel(4,'test12')"></td>
   </tr>
  </table>
</div>
<dl class='topcc'>
  <dd class='dlf'><img style='cursor:hand' onClick="LoadSuns('suns2',2,0);" src='img/tree_explode.gif' width='11' height='11'></dd>
  <dd class='dlr'>test2 <input type='checkbox' name='selid' id='selid2' class='np' onClick="ReSel(2,'test2')"> </dd>
</dl>
<div id='suns2' class='sunct'></div>
<dl class='topcc'>
  <dd class='dlf'><img style='cursor:hand' onClick="LoadSuns('suns3',3,0);" src='img/tree_explode.gif' width='11' height='11'></dd>
  <dd class='dlr'>test3 <input type='checkbox' name='selid' id='selid3' class='np' onClick="ReSel(3,'test3')"> </dd>
</dl>
<div id='suns3' class='sunct'></div> 
    </td>
  </tr>
</table>

栏目ID和栏目名称的代码形式为 onClick="ReSel(2,'test2')这个样子,其中,2是栏目值,test2是栏目名称。可以这样获得它,具体的可以先看图2,取开头结尾,程序将然后将中间提取到的内容里找到形如 onClick="ReSel([分类ID],'[分类名称]')"> 的内容,再将里边的值提取出来,就会得到分类ID的名称及具体值。

图2为刷新列表设置,来说明一下每个名词的意思:

Locoy DedeCMS2.jpg
图2 获取栏目ID时的设置

刷新列表页面也就是用来获得表面的页面,来源页面一般不用写,只有一些特殊的系统,需要检查来路的需要写。页面区域是选定一个区域,里边的内容里包含有分类信息,这里也可以不用写,默认整个页面。分类列表名称ID格式是最重要的,注意规则要符合所有列表格式,当然,也可以只用来获得想要的分类或栏目。

使用上述设置就可以获得分类ID及分类名称.具体情况可以看图3效果图.注意,在网站/cms根地址那块填写的地址(设为地址A)和图2里边刷新列表页面的地址(设为地址B)相加(即A+B),是页面的实际地址http://127.0.0.1/dede51/dede/catalog_tree.php?f=form1&opall=1&v=typeid&bt=selbt1&c=0。其它的地方也一样,都是A加上模块里的地址或后辍。

Locoy DedeCMS3.jpg
图3 刷新列表效果

现在来发布一个文章来做“文章发表参数”这块。直接到发布文章页面。

查看网页属性,得到发布页面的地址/dede/catalog_do.php?channelid=1&cid=1&dopost=addArchives

查看这页的源代码,注意打开不要关闭,这在以后的使用中用得着。先发布一个文章,注意写好标题或是内容,建议全部写成英文字母形式,因为有的系统会对发布出去的文字进行不同的编码,而英文一般不会变的。具体的可以参照图4.

Locoy DedeCMS4.jpg
图4 文章发布时标题或内容的建议写法

有的部分,不想写或要为空,可以像图4里的来源一样,在写文章时不添,再在发布时抓取数据包。各个项目写好后,然后打开Winsock Expert.看图5,选中发布文章的程序的页面,可能使用不同的浏览器选法也不一样,只要选中程序就可以监控浏览器数据的发送情况了。

Locoy DedeCMS5.jpg
图5 使用Winsock Expert 监视浏览器数据发送

上边一切做好后,就可以点击确定,注意,点确定后迅速在Winsock Expert 中暂停抓包,看一下取到的数据, 因为有的系统数据发送很快,而Winsock Expert里的数据里就找不到post的数据了。看一下抓取到的数据,具体请看图6.

Locoy DedeCMS6.jpg
图6 使用Winsock Expert 获取到的浏览器发送的数据

看一下选中的那一行,有个post字样的一行,就是要的信息,其中,看最下边的内容,是浏览器发送的数据,有的发送的数据和post那一行在一起,有的不在,看一下具体的意思

POST /dede51/dede/action/article_add_action.php  

这是发表地址

Referer: http://127.0.0.1/dede51/dede/catalog_do.php?channelid=1&cid=1&dopost=addArchives

这个是来源页面。去掉最前边的网址部分就是来源地址。

将上边的网址分别写入发表地址后缀和来源页面后缀,来看一下下边获得的浏览器发送的数据,下面是获取的数据内容:

这里是获取到的post数据,省略了部分内容。


-----------------------------7d8271202203c0
Content-Disposition: form-data; name="channelid"

1
-----------------------------7d8271202203c0
Content-Disposition: form-data; name="title"

caijitt
-----------------------------7d8271202203c0
Content-Disposition: form-data; name="redirecturl"


-----------------------------7d8271202203c0
Content-Disposition: form-data; name="tag"

Caijitag

………………………………中间这部分略去,因为数据很多………………………

-----------------------------7d8271202203c0
Content-Disposition: form-data; name="arcrank"

0
-----------------------------7d8271202203c0
Content-Disposition: form-data; name="ishtml"

1
-----------------------------7d8271202203c0
Content-Disposition: form-data; name="description"


-----------------------------7d8271202203c0
Content-Disposition: form-data; name="keywords"


-----------------------------7d8271202203c0
Content-Disposition: form-data; name="likeid"


-----------------------------7d8271202203c0
Content-Disposition: form-data; name="imageField"

确定
-----------------------------7d8271202203c0—

这些内容是什么意思呢?我们以下边的内容为例:

-----------------------------7d8271202203c0
Content-Disposition: form-data; name="ishtml"
1

这是一个表单项,名字为ishtml,值为1,现在可以去源代码里看到

 
<td width="90">发布选项:</td>
            <td> <input name="ishtml" type="radio"  value="1" checked>
              生成HTML 
              <input type="radio" name="ishtml"  value="0">
              仅动态浏览</td>

可以知道,这里的1是生成静态,在做最后的post内容时,是这样的格式:

表单项名=值&表单项名=值 

这样的,当将ishtml=2时,意思就是动态发布。更多的所代表的意义可以从源码里看到它的意思。

将上边的数据提取合并,并将标题替换成[标签:标题],内容替换成[标签:内容],其它的类似。就会得到

channelid=1&title=[标签:标题]&redirecturl=&tag=[标签:TAG]&source=&writer=&litpic=&picname=&typeid=1
&dede_addonfields=&remote=1&spsize=5&body=[标签:内容]&shorttitle=&arcatt=0&typeid2=0&templet=
&pubdate=2008-07-18 03:46:53&money=0&sortup=0&color=&arcrank=0&ishtml=1&description=&keywords=
&likeid=&imageField=确定

还要注意的是,pubdate=2008-07-18 03:46:53 这个是发布时间,因为每次手工发布时它是不同的,可以设置一个标签,使它的值为时间,比如pubdate=[标签:时间],也可以直接从发布页的源码里获得,在开始发布时存有发布来源页源码。这时,可以用到登陆随机值这个标签,它其实是从一个页面获得一些参数而已。使pubdate=[登录随机值1],并在随机值获取及UBB那里定义并获得“登录随机值1”,可以先看一下图7

Locoy DedeCMS7.jpg
图7 随机值获取及ubb设置

源码里是

<td width="90"> 发布时间:</td>
            <td width="241"> 
              <input name="pubdate" value="2008-07-18 03:45:53" type="text" id="pubdate" style="width:200px">     

可以取两边的<input name="pubdate" value="及"来获得中间的那个值,也就是图中的设置。

对于其它一些参数,也可以指定固定的值,比如writer,这个可以固定成 writer=小明,也可以使用标签,writer=[标签:作者],其它标签的使用也可以根据需求来设定。

所有的标签,都会替换或处理后再发布出去。

在添加WEB发布配置里边测试模块正确性那里测试发布,可以正常发布,并在发布后返回“成功发布文章:”的字样,这样,可以将这几个字做为发布成功标识码,具体可以看图8.当然,也可以故意制造些错误以得到“发布错误标识码”,这样,在发布错误时就可以知道为什么并修改相关设置。下边是基本完成的模块:

Locoy DedeCMS8.jpg
图8 文章发表参数设置

最后是说明保护那块,说明是添加一些注意事项,使用说明等,保护的话就是可以添加密码,这对于帮别人写模块有保护作用。最下边系统模块名称那里可以写所适用的系统,版本号也请写上。如图9

Locoy DedeCMS9.jpg
图9 说明保护及其它设置





参考来源[ ]

火车采集器使用手册导航

安装

系统安装

主程序

主程序|主菜单|命令行启动|随机文件夹保存数据|正则匹配模式采集数据|采集记录筛选|代理服务器采集数据|POST方式获得网址|拓展插件|分页采集|多页采集|数据导出|多任务多线程|手动链接格式设置|循环匹配采集|网站登陆采集|列表缩略图及标签采集|html标签排除|全局词语替换|首图缩略|FTP文件上传|附件上传|本地数据编辑|下载导出|图片下载|Flash文件下载|任意格式文件下载|采集数据导入数据库|任务定时自动更新|任务运行日志|自动中文分词|自动摘要和拼音|前后截取模式|采集任务新建

子程序

源代码获取与模拟|Web在线发布模块编辑器|Web在线发布配置管理|数据库发布模块编辑器|数据库发布配置管理|工具箱|编程插件管理|翻译测试|中文分词测试|自动运行管理器 任务队列管理器|自动升级程序

应用拓展

数据库发布模块编辑器制作|外部编程插件开发

模块开发

DedeCMS文章模块|PHPWind论坛模块|Discuz论坛模块

FAQ

使用前常见问题|编辑任务中常见问题|发布失败常见问题|使用中常见问题|VIP版本常见问题