代码改变世界

开淘宝店的一次大批量宝贝图片替换

2011-03-15 10:16  stubman  阅读(12076)  评论(9编辑  收藏  举报



 

开淘宝店最基本的要有自己的“宝贝”【店里要经营的商品】,宝贝怎么发,开过淘宝店的朋友应该都知道,没开过这里也说一说,很简单:

1、填写商品名称、属性等信息;

2、编写宝贝描述;

其中,编写宝贝描述可以说是很让人头疼的一件事。。需要有自己的图片还不够,还需要上传到自己的图片空间,然后应用HTML进行排版,最后发布。商品想吸引人当然得把宝贝描述做好,特别是细节图要多,这个就麻烦了,需要上传N多图片,然后一个一个对链接,替换,我的开店过程中就遇到了,被整的半死,最后写程序解决,本文说的就是这么一遭,希望对同志们解决类似问题在思路上有所帮助。
PS:别指望能完全照搬我的代码,一劳永逸,此代码乃量身定制,不多半点边角料: )

朋友知道我想跟他一起卖鞋后很热心的帮我搞来了他的很多鞋子的宝贝数据【说白了就是:1、excel文件;2、与excel对应的宝贝图片】,可以通过淘宝网提供的淘宝助理进行上传,甚慰~窃以为原来如此轻松~没想到,这才是烦恼的开始。。。。(最近一连串的事让我不禁感慨,自己做生意还真是难,处理这些小事都是需要精力的,还需要进行推广,自己看货,发货,有不满意的要求过高的客户还要退货,等等等等。。打住)待我把宝贝数据批量进行导入的时候,悲剧发生了:

image 
基本所有的宝贝都提示:引用Picture存在盗链,网络上查一查才知道,原来牛X的淘宝。。。很友好的为每个商家提供了图片空间,关闭了对51空间的支持,很多商家都把宝贝描述中的图片传到淘宝的图片空间中,最后,淘宝来一手:禁止盗用其他店铺的图片,这样防止淘宝的店铺盗取其他店铺宝贝的行为。这下可把我搞惨了,难道几百个宝贝,上千张细节图,我得一个个下载下来,然后上传到自己图片空间上去,一个个比对图片(名),到空间去找对应的图片的链接,然后替换链接。。。。。汗。我会吃不消的。

好吧,还好咱是程序员,可以写点东西来处理一下,让电脑来帮我们做一些重复劳动,总结一下做了的事情:

1、图片下载工具:解析excel中需要下载到本地的图片URL并进行下载,根据图片URL中的文件名保存到指定文件夹。
2、图片上传到淘宝的图片空间,这个是手动的。
3、对淘宝图片空间返回的HTML代码进行提取和分析,找到规律【这里庆幸淘宝空间的处理还是比较合理,上传上去的图片,名称没有变】,用javascript写了个Function提取图片名称与图片URL的对应关系
4、通过文件名(原URL地址中得到)与URL的对应关系,生成EXCEL的替换宏,最后到EXCEL执行宏。

  本文只介绍3、4两部分,至于图片下载工具,在另外一篇博客将会单独介绍。

3、首先抓取图片空间的HTML源代码,我用的是chrome浏览器,单击右键,有“审查元素”选项,可以在资源栏里面找到HTML源代码并下载。淘宝图片空间展示:

image

对应的HTML代码中找到了图片名称与相关链接的规律及对应关系【认真的朋友应该可以看得出规律来,下面的图片是一张图片的所有信息,都包含在一个Li中,有1000张图片,就会有1000个相同格式的Li】:
image

下载之后保存到自己本地的页面中,并且加上提取图片名称与图片URL的对应关系的脚本方法:
image

代码比较简陋,也没花太多时间优化啥的了,勿拍。 
运行程序,得到了一大段的文本信息(在var text中,debugger可以得到。)这里摘操一小部分,格式都是类似的:

http://img04.taobaocdn.com/imgextra/i4/62888715/T2k6BBXdxaXXXXXXXX_!!62888715.jpg@ 33;http://img01.taobaocdn.com/imgextra/i1/62888715/T2.jxBXd4aXXXXXXXX_!!62888715.jpg@ 12;http://img04.taobaocdn.com/imgextra/i4/62888715/T2OPxBXe0aXXXXXXXX_!!62888715.jpg@ 34;http://img01.taobaocdn.com/imgextra/i1/62888715/T2C6xBXfpaXXXXXXXX_!!62888715.jpg@ 3;http://img01.taobaocdn.com/imgextra/i1/62888715/T2mjxBXfVaXXXXXXXX_!!62888715.jpg@ 9;http://img04.taobaocdn.com/imgextra/i4/62888715/T2.ztBXghaXXXXXXXX_!!62888715.jpg@ 26;http://img04.taobaocdn.com/imgextra/i4/62888715/T246tBXgtaXXXXXXXX_!!62888715.jpg@ 35;http://img01.taobaocdn.com/imgextra/i1/62888715/T2TztBXgNaXXXXXXXX_!!62888715.jpg@ 16;http://img02.taobaocdn.com/imgextra/i2/62888715/T2DztBXhlaXXXXXXXX_!!62888715.jpg@ 14;http://img03.taobaocdn.com/imgextra/i3/62888715/T2oPtBXhRaXXXXXXXX_!!62888715.jpg@
8;

以分号为界,这里有10张图片的信息,每个信息中以@为界,前半部分为图片的URL,而后半部分为图片名,这里凑巧正好都是数字,也有些图片名是guid等等格式的。
4、通过文件名(原URL地址中得到)与URL的对应关系,生成EXCEL的替换宏,最后到EXCEL执行宏。

  根据这段文本信息,生成Excel的宏代码。手动整理淘宝的宝贝Excel数据,将宝贝描述一列复制并粘贴到一个新建Excel文件中,写程序去读此Excel文件,并生成需要的宏文本,程序如下【对正则表达式不是很熟,写不出来提取链接的正则表达式,只要用了比较笨的方法。】:

image 

【至于读取Excel到DataTable的方法,网络上很多,这里就不赘述了】

运行程序,跟踪,复制出最后变量output的值,就是所要的宏的核心部分,加上宏的头和尾,得到Excel宏【以下是生成宏的示例,3个旧的链接,替换成新的链接】:

1 Sub Macro1() 
2 Cells.Select
3 Selection.Replace What:="http://www62.babidou.com/pic/2010/8/20/lovexiaoxi/Babidou_SuperMove/6000/hmywhs/000f04503967176684cad244ba713e83.jpg", Replacement:="http://img03.taobaocdn.com/imgextra/i3/62888715/T2b0lBXoRaXXXXXXXX_!!62888715.jpg", LookAt:=xlPart, _ 
4 SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
5 ReplaceFormat:=False 
6 Selection.Replace What:="http://www62.babidou.com/pic/2010/8/20/lovexiaoxi/Babidou_SuperMove/6000/hmywhs/5bcccf2c741f6fd9c33c43966e7074a9.jpg", Replacement:="http://img03.taobaocdn.com/imgextra/i3/62888715/T2AdtBXklaXXXXXXXX_!!62888715.jpg", LookAt:=xlPart, _ 
7 SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
8 ReplaceFormat:=False 
9 Selection.Replace What:="http://www62.babidou.com/pic/2010/8/20/lovexiaoxi/Babidou_SuperMove/6000/hmywhs/cc8c786fcb94169f57d0b947db2b051f.jpg", Replacement:="http://img01.taobaocdn.com/imgextra/i1/62888715/T23tBBXfNaXXXXXXXX_!!62888715.jpg", LookAt:=xlPart, _ 
10 SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
11 ReplaceFormat:=False
12 End Sub

最后,打开Excel数据,执行这段宏。。稍等片刻,搞定。