前阵子研究过京东商城的价格图片采集算法,并在《【技术原创】探讨一下京东商城价格图片解析算法的优化,附演示程序下载》一文中详细阐述了这个算法的来源及推理过程,随后我又将自己演示的程序上传供大家下载。今天我就关于京东价格采集分析这块,将C#写的源代码向大家免费开放,希望能对大家有所帮助,同时也希望大家尊重本人的劳动成果,在项目中使用的时候尽量保留代码头部标示的出处。
下面就是演示程序的截图:
这两天呢,我又将代码整理了一下,将算法部分单独弄到一个项目里,使其成为DLL以供其它项目使用。其中SpiderHtml是根据商品页面的HTML代码采集价格类,它提供了两种方法:根据商品地址或根据商品页面HTML采集价格;SpiderImg是根据商品价格图片分析出价格,它同样也提供了两种方法:根据商品的ID或根据商品价格图片解析价格。HTML方式和图片方式各有各的优缺点,前者使用正则表达式直接找出价格,但容易被京东发现短时间内连续访问页面,可能会被屏蔽掉;后者不访问页面直接下载商品价格图片,并采用了性价比相当高的算法快速解析出商品价格(大家可以看到上图中,解析39个价格,比对了1115次,平均每个价格图片比对了不到29次,也就是说每张图片大约采集29个像素点即可以解析出图片上的所有数字)。
若想更安全地,高正确率地使用此接口,建议同时使用两种方案,即使用HTML方式采集价格后,也要通过图片方式再验证一下,只有两者相等再确定(经本人实验表明,采集了相当量的数据后,并未发现有解析错的地方)。
源代码下载地址:JingDongInterface.zip
演示程序下载地址:JingDongInterfaceExe.zip
13条评论
有点看的迷茫!!
专业性的文章,以后得多写点了。不过谷歌PR还是没更新,咱也顾不着了。
你好 JingDongLib.SpiderImg jddll = new JingDongLib.SpiderImg();
decimal preic = jddll.GetPrintImg(img);
价格识别错误还是不少!
除非是京东更新图片生成机制了,否则没这么多错误的,顶多是五位数的价格会不正确。
除了1499 好像都没办法正确读取出来
呵呵 搞清楚原因了!http://price.360buyimg.com/gp570127,{1-6}.png共六种 目前试了两种:一种无法识别,第三种可以正常识别!
现在好像识别出来的都 111.11这种了。。
我看了京东没改价格图片啊,注意价格图片的下载地址,京东对一个产品的价格有好几种规格的图片。
京东的图片生成机制改过了,有些特价商品的图片http://jprice.360buyimg.com/price/gp231010-1-1-3.png 有改动,所以生成了11.11这种价格
如果是这样的话,那就得改算法了。毕竟我也有段时间没关注京东价格解析了。
我用过另一种方法,抓取分享的内容,里面也有商品的价格,但是也不靠谱,有些特价商品图片价格改了,但是分享内容里面的价格没有变
你好博主,怎么现在解析出来的都是11.11这样的价格?有更新的程序不?谢谢。
京东确实改了图片生成的算法了,不过如果你弄清楚了我的算法原理的话,改一下也不麻烦。我最近是比较忙,看什么时候有时间把这个算法弄成可自行演算出算法公式的就好用了。