电子商务在中国的发展已经越来越迅速了,有非常多的实体店已经从传统的行业转向了网络市场,他们当中的很多人都不再纯粹的依附于淘宝等第三方交易平台,因为他们很清楚的认识到淘宝的客户是大家共享的客户,淘宝上做起来的品牌也很可能由于一两次的不小心,而导致整个积累过程前功尽弃。于是他们选择了独立网店系统。注册了完全属于自己品牌的独立域名,有了自己的管理后台,管理客户那才叫爽。
当然,有了独立网店,没有销售那怎么行呢,因此很多人,在淘宝、拍拍、携购网、易趣等等大型的平台上开起了店,他们在这些地方开店是为了增加自己的销售点。销售点多了是好事情,但是产品发布却成了他们最头痛的事情,如果每个地方都要重新发布产品的话,那简直就是受罪。如果能有个很方便的批量导入、导出产品到各个销售点的功能,那该多好啊。
这几天,我抽空研究了一下目前国内比较有名的免费独立网店系统(独立购物网系统),如:ShopEx、ShopXG(携购独立网店)、ECShop(买否网店)、HIShop 等等。他们都提供了数据包的导入,导出功能,特别是ShopXG的VTEditor网店模板可视化编辑系统,更加灵活,功能十分的强大,可惜他们都没有提供源代码。VTEditor的截图是这样的:
这几天我分析了下淘宝数据的原理,就把这几天的劳动成果拿出来给大家分享一下:
这里我主要分析淘宝的CSV数据包。首先,特别强调一下,虽然同属于CSV的格式,但是淘宝的CSV格式要求保存为Unicode,而拍拍的需要保存为UTF-8。因此,这个前提不注意,你做出来的数据包导入到淘宝助理里,全部导入后会提示异常的错误信息,虽然能导入成功,但是每导入一次就要重新启动助理,这样太麻烦了。
我这里不讲解所有的代码,只是把核心部分的代码拿出来给大家讲解下。
从自己的独立购物网系统中将产品导入到淘宝助理过程核心代码:
将组织好的数组数据保存为CSV文件的代码:
第二部分:将淘宝CSV数据包导入到用户的独立购物网系统中,核心代码如下:
如下代码,将指定的CSV数据读取保存到List数组里。
然后将获取到的数组数据,根据上面对应的字段写入到独立网站数据库即可。
当然,有了独立网店,没有销售那怎么行呢,因此很多人,在淘宝、拍拍、携购网、易趣等等大型的平台上开起了店,他们在这些地方开店是为了增加自己的销售点。销售点多了是好事情,但是产品发布却成了他们最头痛的事情,如果每个地方都要重新发布产品的话,那简直就是受罪。如果能有个很方便的批量导入、导出产品到各个销售点的功能,那该多好啊。
这几天,我抽空研究了一下目前国内比较有名的免费独立网店系统(独立购物网系统),如:ShopEx、ShopXG(携购独立网店)、ECShop(买否网店)、HIShop 等等。他们都提供了数据包的导入,导出功能,特别是ShopXG的VTEditor网店模板可视化编辑系统,更加灵活,功能十分的强大,可惜他们都没有提供源代码。VTEditor的截图是这样的:
这几天我分析了下淘宝数据的原理,就把这几天的劳动成果拿出来给大家分享一下:
这里我主要分析淘宝的CSV数据包。首先,特别强调一下,虽然同属于CSV的格式,但是淘宝的CSV格式要求保存为Unicode,而拍拍的需要保存为UTF-8。因此,这个前提不注意,你做出来的数据包导入到淘宝助理里,全部导入后会提示异常的错误信息,虽然能导入成功,但是每导入一次就要重新启动助理,这样太麻烦了。
我这里不讲解所有的代码,只是把核心部分的代码拿出来给大家讲解下。
从自己的独立购物网系统中将产品导入到淘宝助理过程核心代码:
public ListPrepareTaobaoCSVData() { int num2; int num = 0x1f; List list = new List (); string[] strArray = new string[] { "宝贝名称", "宝贝类目", "店铺类目", "新旧程度", "省", "城市", "出售方式", "宝贝价格", "加价幅度", "宝贝数量", "有效期", "运费承担", "平邮", "EMS", "快递", "付款方式", "支付宝", "发票", "保修", "自动重发", "放入仓库", "橱窗推荐", "发布时间", "心情故事", "宝贝描述", "宝贝图片", "宝贝属性", "团购价", "最小团购件数", "邮费模版ID", "会员打折"}; list.Add(strArray); if(this.productList == null) this.productList = new ArrayList(); this.m_parent.progressBar1.Maximum = this.productList.Count; int num3 = -1; for (num2 = 0; num2 < this.m_parent.listView1.Items.Count; num2++) { if (this.m_parent.listView1.Items[num2].Checked) { num3 = num2; break; } } for (num2 = 0; num2 < this.productList.Count; num2++) { ShopXGProduct product = (ShopXGProduct)this.productList[num2]; string[] strArray2 = new string[num]; XGTaoBao tag = (XGTaoBao)this.m_parent.listView1.Items[num3].Tag; this.m_parent.progressBar1.Value = num2 + 1; strArray2[0] = "\""+product.m_name+"\""; strArray2[1] = tag.m_cateId ; strArray2[2] = tag.m_shopCateId; strArray2[3] = tag.m_oldLevel; strArray2[4] = "\"" + tag.m_capital.Trim() + "\""; strArray2[5] = "\"" + tag.m_city.Trim() + "\""; strArray2[6] = "\"" + tag.m_saleType + "\""; strArray2[7] = PackageProductHelper.GetPriceByProIdAndTypeId(product.m_id, ((OutPutCSV)this.m_parent).m_curPriceTypeId).ToString(); strArray2[8] = tag.m_priceUpStep; strArray2[9] = tag.m_count; strArray2[10] = tag.m_validateTime; strArray2[11] = tag.m_post; strArray2[12] = tag.m_pingyou; strArray2[13] = tag.m_ems; strArray2[14] = tag.m_kuaidi; strArray2[15] = tag.m_payType; strArray2[0x10] = tag.m_zhifubao; strArray2[0x11] = tag.m_fapiao; strArray2[0x12] = tag.m_baoxiu; strArray2[0x13] = tag.m_autoSend; strArray2[20] = tag.m_putInStore; strArray2[0x15] = tag.m_recommend; strArray2[0x16] = "\"" + DateTime.Now.ToString() + "\""; strArray2[0x17] = "\"" + tag.m_story + "\""; if (this.m_parent.radioButton1.Checked) { strArray2[0x18] = "\"" + this.GetProductDescribe(tag.m_describe, product) + "\""; } else { strArray2[0x18] = "\"" + this.GetProductDescribe(this.m_parent.m_proDetailMode, product) + "\""; } string path = this.m_parent.textBox4.Text.Trim(); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } string str2 = DateTime.Now.ToString().Replace(" ", "").Replace("-", "").Replace(":", "") + num2.ToString(); DealPic.SavePhotoFromUrl(path, str2 + ".jpg", product.m_pic1); strArray2[0x19] = "\"" + path + str2 + ".jpg" + "\""; strArray2[0x1a] = "\"" + tag.m_property+"\""; strArray2[0x1b] = strArray2[7]; strArray2[0x1c] = tag.m_tgCnt; strArray2[0x1d] = tag.m_youfeiTemp; strArray2[30] = tag.m_zhekou; list.Add(strArray2); } return list; }
将组织好的数组数据保存为CSV文件的代码:
public static void WriteCSV(string filePathName, bool append, Listls) { bool isTaobao = false; if (ls.Count < 1) return; if (ls[0][0].IndexOf("宝贝名称") >= 0) isTaobao = true; Encoding code = System.Text.Encoding.Default; if(isTaobao) code = System.Text.Encoding.Unicode; else code = System.Text.Encoding.GetEncoding("gb2312"); StreamWriter sw = new StreamWriter(filePathName, false,code); StringBuilder builder = new StringBuilder(); foreach (string[] strArray in ls) { for (int i = 0; i < (strArray.Length - 1); i++) { if (isTaobao) { builder.Append(strArray[i]); builder.Append("\t"); } else builder.Append(strArray[i] + ","); } if (isTaobao) { builder.Append(strArray[strArray.Length - 1]); builder.Append("\t"); } else builder.Append(strArray[strArray.Length - 1]); builder.Append("\r\n"); } sw.Write(builder.ToString()); sw.Flush(); sw.Close(); }
第二部分:将淘宝CSV数据包导入到用户的独立购物网系统中,核心代码如下:
如下代码,将指定的CSV数据读取保存到List数组里。
public static ListReadCSV(string filePathName) { List list = new List (); StreamReader reader = new StreamReader(filePathName, Encoding.GetEncoding("gb2312")); string str = ""; while (str != null) { str = reader.ReadLine(); if ((str != null) && (str.Length > 0)) { #region 这里开始解析数据,因为paipai和淘宝的数据格式不一样,所以要分开来 Regex reg = new Regex("(\"[\\w|\\W|\\s|\\S|\\r|\\t|\\n]*?\"),|.*?,"); MatchCollection mc = reg.Matches(str); if (mc.Count < 30) {//肯定这里格式不对了,所以要换 reg = new Regex("(\"[\\w|\\W|\\s|\\S|\\r|\\t|\\n]*?\")\\t|.*?\\t"); mc = reg.Matches(str); } #endregion string[] strArray = new string[mc.Count]; for (int i = 0; i < mc.Count; i++) { string t = mc[i].ToString(); strArray[i] = t.Trim('\t').Trim('\"'); } list.Add(strArray); } } reader.Close(); return list; }
然后将获取到的数组数据,根据上面对应的字段写入到独立网站数据库即可。