Web发布中内容发布之前的版本一直是粘贴发布中抓包的数据,然后软件自动分析表单名与表单值,但是对于一些特殊要求的发布网站,这个功能就不大好用,因此,新版本添加了新的自定义发布数据的功能,可以更方便的处理一些复杂的网站。
下面介绍下自定义数据的功能:
(1)对于使用json或者其他特殊格式作为post的网站,那么就可以直接使用自定义数据。
(2)对于一些表单项个数不确定的网站。
①比如发布商品时,有添加发布图片,发布图片有几个那么就需要添加几个表单项,那么就必须要使用自定义数据,发布的图片在采集数据的标签中就定义好,然后发布模块直接调用该标签中的值
②比如发布分类时,有各种不同的颜色,每增加一种颜色就会增加一个表单项,但是每种产品颜色数量不固定的时候,这时就可以使用自定义发布数据来做。
还有各种不同的应用场景,具体结合需求来做。不过简单的发布还是建议使用发布web本身的发布即可,这种方式要更明确一些。
下面以opencart发布商品图片为例来讲解该功能用法,教程中主要讲自定义发布数据用法,发布模块制作方法就简单截图示意:
(1) 首先,我们手动发布一条商品信息,使用fiddler抓包分析下发布格式:
这种出现的form-data格式的参数,我们现在用自定义发布的话,最好是使用
application/x-www-form-urlencoded,因此我们可以在发布模块中写一个简单的发布模块,看下application/x-www-form-urlencoded这种是什么格式:
直接将post参数粘贴在程序中,然后点击提取,因为opencart较特殊,还会在高级功能中产生文件上传,但是这个实际是没有作用的,因此我们手动将他删除掉
接下来,就是测试发布试下得到接下来就可以点击保存,然后在配置文件中配置好地址参数,接下来就是测试发布使用fiddler抓包得到application/x-www-form-urlencoded格式的post参数,参数格式如下图:
(3)已经得到post参数格式如下图:
接下来就是分析图片上传的参数格式:
如上图分析,可以看出,①处是主图上传的参数,②处是上传的两个附图,因此我们只需要将上传的两个附图处理成如②中的参数格式就能正确上传多个附图。现在我们先将post参数填入自定义发布数据中,并定义好标签名称,地址中的随机值也定义为全局变量,接下来的操作就是在采集规则中定义的:
(3) 下面以
http://www.jammerall.com/products/Desktop-Adjustable-4W-All-5.2G-5.8G-2.4G-WIFI-Jammer-.html,这个产品的采集为例,介绍下怎么处理采集规则,这个产品的采集需要cookie,因此使用fiddler抓取cookie并放入火车采集器中,然后将需要采集的标签通过发布模块导入采集器中:
下面将所需设置的标签采集规则设置好,设置并下载图片后如下图:
其中商品标题之类,加了字符编码的处理,因为在使用自定义发布数据的时候,是不会对发布的内容进行加密的,因此我们要在采集规则的时候就加密:
我们采集的规则应该可以看出,主图的结果已经是符合格式要求的了,我们现在要处理的就是附图的格式,我们来对比下,我们现在抓取到的格式以及要处理成的格式
我们抓取到的格式是以逗号间隔,但是我们处理的格式是需要每一张图片都有一个递增的序号,并加上一些前缀后缀来处理,这种的话,我们就必须使用C#代码来处理,这边我们提供下这个样板的代码:
using System;
using System.Collections.Generic;
using SpiderInterface;
class LocoyCode{
public string Run(string content,ResponseEntry response){
string[] strArray = content.Split(',');
int len=strArray.Length;
string t;
content="";
for(int i=0;i<len;i++)
{
t=strArray[i];
content=content+"&product_image["+i+"][image]="+t+"&product_image["+i+"][sort_order]=0";
}
return content;
}
}
填在C# 中运行下就可以。
然后你按照你图片上传的ftp连接,设置下ftp连接方式以及相应的目录就可以正确发布。
RSS