python 脚本开发实战-当当亚马逊图书采集器转淘宝数据包

开发环境python2.7.9 os:win-xp exe打包工具pyinstaller 界面tkinter

=============================================

最近有个朋友让我写个小功能,采集当当网数据,生成淘宝数据包

需要采集出版社,作者,主图,价格

采集方式是搜索书名或者ISBN编号

废话不多说,老司机开始上路了

首先,分析当当网数据,这里祭出大杀器,firefox下fire-bug,查看网络数据不再话下

查看源码

<ul id="component_0__0__6612" class="bigimg">
<li id="p20609259" class="line1">
<a class="pic" title=" 远去的历史场景-祀孔大典与孔庙 " ddclick="act=normalResult_picture&pos=20609259_0_2_q" name="itemlist-picture" href="http://product.dangdang.com/20609259.html" target="_blank">
<p class="name" name="title">
<p class="detail"></p>
<p class="price">
<p class="dang" style="display: block">当当自营</p>
<p class="search_star_line">
<span class="tag_box">
<p class="search_book_author">
<p class="bottom_p">
</li>

看到搜索结果是这样,

看到这个<li id="p20609259" class="line1">标签,怀疑是搜索结果的

检查了下,果然是,后面line1代表第一个

这样就好弄了,id检查了下,就是商品的id,这样更好了,只要采集这个标签就可以获得搜索结果的id列表

代码如下

def get_bookid(keyword):
    try:
        api = "http://search.dangdang.com/?key="+keyword+"&act=input"
        print api
        urlresponse = urllib2.urlopen(api,timeout=10).read()#.decode("gbk").encode("utf-8")
        re_id = re.compile(r‘((?<=" id="p)[0-9]+(?=">))‘)
        id_all = re.findall(re_id,urlresponse)
        re_price=re.compile(r‘(?<=<span class="search_now_price">&yen;).+?(?=</span>)‘)
        price = re.findall(re_price,urlresponse)
        return id_all,price
    except Exception, e:
        print e
        return [],[]

这里通过ISBN关键词搜索获取到了id列表,和价格列表

2,分析单品源码,看看需要的信息是否都有需要的

查到html代码部分

<meta name="description" content="当当网图书频道在线销售正版《远去的历史场景-祀孔大典与孔庙》,作者:刘亚伟 著,出版社:山东文艺出版社。最新《远去的历史场景-祀孔大典与孔庙》简介、书评、试读、价格、图片等相关信息,尽在DangDang.com,网购《远去的历史场景-祀孔大典与孔庙》,就上当当网。">

meta 里面都有了,出版社,作者

剩下就是主图了

查到html代码部分

<a href="javascript:;" data-imghref="http://img3x9.ddimg.cn/33/0/20609259-1_w.jpg">
<img src="http://img3x9.ddimg.cn/33/0/20609259-1_x.jpg">
</a>

找了下主图都是这种 数字_x或者w,多次测试下来

基本确定了正则表达式

    re_img=re.compile(r‘http:.+[0-9]_w_[0-9]+\.jpg‘)
    re_img1=re.compile(r‘http:.+[0-9]_w\.jpg‘)
    re_img2=re.compile(r‘http:.+[0-9]_k_[0-9]+\.jpg‘)

这3个正则基本ok了

这样就完成了

最后就是淘宝数据包格式,淘宝数据包是csv格式+文件夹

文件夹里面都是相关图片,格式是tbi,其实就是jpg换了下后缀

然后csv文件格式是unicode的

这里贴出csv数据

csv_head=‘‘‘version 1.00\ntitle\tcid\tseller_cids\tstuff_status\tlocation_state\tlocation_city\titem_type\tprice\tauction_increment\tnum\tvalid_thru\tfreight_payer\tpost_fee\tems_fee\texpress_fee\thas_invoice\thas_warranty\tapprove_status\thas_showcase\tlist_time\tdescription\tcateProps\tpostage_id\thas_discount\tmodified\tupload_fail_msg\tpicture_status\tauction_point\tpicture\tvideo\tskuProps\tinputPids\tinputValues\touter_id\tpropAlias\tauto_fill\tnum_id\tlocal_cid\tnavigation_type\tuser_name\tsyncStatus\tis_lighting_consigment\tis_xinpin\tfoodparame\tsub_stock_type\titem_size\titem_weight\tbuyareatype\tglobal_stock_type\tglobal_stock_country\twireless_desc\tbarcode\tsubtitle\tsku_barcode\tcpv_memo\tinput_custom_cpv\tfeatures\tbuyareatype\tsell_promise\tcustom_design_flag\tnewprepay\tqualification\tadd_qualification\to2o_bind_service\n宝贝名称\t宝贝类目\t店铺类目\t新旧程度\t省\t城市\t出售方式\t宝贝价格\t加价幅度\t宝贝数量\t有效期\t运费承担\t平邮\tEMS\t快递\t发票\t保修\t放入仓库\t橱窗推荐\t开始时间\t宝贝描述\t宝贝属性\t邮费模版ID\t会员打折\t修改时间\t上传状态\t图片状态\t返点比例\t新图片\t视频\t销售属性组合\t用户输入ID串\t用户输入名-值对\t商家编码\t销售属性别名\t代充类型\t数字ID\t本地ID\t宝贝分类\t账户名称\t宝贝状态\t闪电发货\t新品\t食品专项\t库存计数\t物流体积\t物流重量\t采购地\t库存类型\t国家地区\t无线详情\t商品条形码\t宝贝卖点\tsku 条形码\t属性值备注\t自定义属性值\t尺码库\t采购地\t退换货承诺\t定制工具\t7天退货\t商品资质\t增加商品资质\t关联线下服务\n‘‘‘
def csv_table(title="",price="",detail="",pic1="",IBSN="",pub="",zuo="",code=""):
    csv_line = "%s\t50005701\t\t1\t\t\t1\t%s\t0\t35\t\t1\t0\t0\t0\t1\t1\t1\t0\t\t%s\t\t0\t0\t\t200\t\t0\t%s\t\t\t\"1636953,2043189,46602357,122216620\"\t\"%s,%s,%s,%s\"\t%s\t\t0\t1087745975\t0\t\t不要重复用户名\t0\t0\t0\t\t0\t\t0\t0\t-1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t" % (title,price,detail,pic1,IBSN,zuo,title,pub,code)
    return csv_line

用上面函数返回单个商品的数据

最后保存

测试了下,基本上能达到90%的覆盖率

============================

不过作为一个老司机,是不满足这个结果的,我们的目标是要完成95%+的覆盖率经过排查,亚马逊上面的覆盖率毕竟高一点,基本上当当上找不到的亚马逊上面都能找到
作为老司机的我当然是要一试亚马逊了,这可是大公司哈

首先,老方法,urllib2.urlopen()先来探探,结果返回各种504什么的看来爬虫是不太好弄了,要模拟浏览器,比较麻烦,突然想起来亚马逊这么大公司,应该有api接口,这里务必提一下,抓网站前先看下是否有api
不然会浪费大量时间,明明都有接口,那么容易得到数据

果然,经过各种搜索,找到了接口下面放出官方测试页面

http://webservices.amazon.cn/scratchpad/index.html

api和key自己注册去,那个什么Associate Tag随便填写就行了

然后比较贴心的就是还有提供php签名实例,简直不要太贴心好吧,这里赞一个

官网给的php是生成api接口,我把最后修改了下,生成以后访问下接口,获取数据,

$handle = fopen($request_url, "rb");
$contents = stream_get_contents($handle);
fclose($handle);
header(‘Content-Type: text/xml‘);
echo $contents;

部署到自己服务器,然后传入一个查询的参数,ok,接口对接完毕,这样就完成了一个属于自己的api接口

返回数据是xml格式,还是挺不错了,

把接口写入python,做了一个函数

def get_book_data_ISBN(keyword):
    try:
        api = "http://xxxxxxx/amzon_UPC.php?ISBN="+keyword
        print api
        time.sleep(10)
        data = urllib2.urlopen(api,timeout=10).read()
        print data
        if "xml" in data:
            pic = xml("URL",xml("LargeImage",data))
            Author = xml("Author",data)
            Publisher = xml("Publisher",data)
            Price = xml("FormattedPrice",data).split(" ")[-1]
            title = xml("Title",data)[0:40]
            return pic,Author,Publisher,Price,title
        else:
            return "none","none","none","none","none"
    except Exception, e:
        print e
        return "none","none","none","none","none"

最后测试下来,达到了98%的覆盖率,这样的结果还是挺满意的

界面是用tk写的,这里找了vb的一个插件,可以生成python的界面函数,这样就可以愉快的画界面了

直接生成python界面,好用的不要不要的,太省时间了

最后用pyinstaller打包程exe,测试下来用这个打包还是挺稳定的,win7,win10,xp都可以运行

最终界面如下

时间: 2024-10-27 08:32:16

python 脚本开发实战-当当亚马逊图书采集器转淘宝数据包的相关文章

电子出版阅读战 当当亚马逊对决BAT

随着BAT文化娱乐战役全面打响,数字阅读市场成为舆论宠儿,近日,京东收购拇指阅读,也试图搭上末班车.这场由BAT重整网络文学市场而引发的数字阅读大战正推动电子出版市场加速发展,但实际走在前方的,是当当.亚马逊.多看等为代表的"电子出版物"流派. 哪里有BAT地方,哪里就有舆论关注.但很多人混淆了电子出版和网络文学之间的关系.电子出版是从纸质书.电子书逐渐演化而来的,网络文学则是在PC时代以网络原创小说而来. 今年4月,国家新闻出版广电总局印发的<关于推动网络文学健康发展的指导意见

亚马逊——不一样的电商公司

其一: 电商公司就是电子商务公司.电子商务通俗的说就是利用电子工具进行各种商务活动,如网上购物.在线电子支付等.可以说电子商务是传统商业活动的电子化和网络化.离我们最近的就是网购了,通常我们会在淘宝.天猫.聚美优品.亚马逊等购物平台上购买东西,他们已然成为了我们生活的一部分.但我们不曾留意,他们分别代表着不同的电商公司,拥有不同的理念与策略.下面我们将通过与淘宝的对比,谈一下与众不同的电商公司亚马逊公司. 亚马逊公司,是美国最大的一家网络电子商务公司,于2004年进入中国.再他的发展史上有三次定

在亚马逊做店铺的经验谈:少做产品,做精产品才是正道

从2001年开始,除了宣传自己是最大的网络零售商外,亚马逊同时把“最以客户为中心的公司”(the world‘s most customer-centric company)确立为努力的目标.此后,打造以客户为中心的服务型企业成为了亚马逊的发展方向.为此,亚马逊从2001年开始大规模推广第三方开放平台(marketplace).2002年推出网络服务(AWS).2005年推出Prime服务.2007年开始向第三方卖家提供外包物流服务 Fulfillment by Amazon(FBA).2010

亚马逊又挂了,只是因为半价清仓活动?

昨天亚马逊又挂了,为什么是又呢,因为每年亚马逊都要挂几次. 昨天是什么日子让亚马逊又挂了呢?不就是因为清仓促销吗--你的骄傲呢,高可用呢,负载均衡呢,分布式呢,三驾马车怎么一驾都不管用了呢? 不就是在国内弄个促销么--不就是被羊毛党盯上了么--至于么你,一挂就是几个小时,我反正在下午2点看看是上不去了,下午4点多还是不行.你再看看我们的淘宝,差距啊,知道自己为什么清仓了么. 行业里有句话是这么形容的:亚马逊的黑五就是淘宝的日常. 有一说一,淘宝的1111真的是全球独一档,后面的技术栈我不是阿里人

外贸人如何用wordpress网站榨取Amazon亚马逊利润

外贸人如何用wordpress网站榨取Amazon亚马逊利润 做外贸亚马逊的朋友可能会发现,亚马逊的手续费每笔都在10%.相对于做外贸速卖通来说,相比之下要贵100%.但是亚马逊的转 化率高,也是每个做过亚马逊的外贸人比较了解的了.那么我们应该如何给我们亚马逊店铺来做推广,然后榨取回来一笔亚马逊的成交费用呢.很简单,我们只需要 以下材料: 1.亚马逊的associate账户 2.wordpress网站,或者wordpress博客 3.懂得一点SEO或者说给博客做流量的技巧 亚马逊的associa

同样是无货源模式,为什么亚马逊店群那么暴利?

最近很多人问我:店群现在还能做吗?这个问题我在网上搜了下,发现也是问的最多的一个问题,但是提问者都有一个相同点,他们基本都是新手小白,在互联网项目如此泛滥的时代,电商仿佛是一根救命稻草,大家都想要拼命抓住分一杯羹,所以没有尝到甜头的新手,一直在犹豫.同样是无货源模式,为什么亚马逊店群那么暴利? 今天我就好好来回答下这个问题,首先店群一直可以做,只要电商平台不死,就一直能做下去,你看刷单多少年了屡禁不止,到现在还是有很多人在刷.店群也会是一样,只要电子商务还存在,无货源店群就可以一直做下去首先王绍

利用Python抓取亚马逊评论列表数据

前段时间,我家妹子公司老板叫她去将法国亚马逊评论列表的前100页共1000个评论用户的联系方式找出来.1000个用户,要一个个的去看再记录下来,而且并不是每个评论用户都会将个人的联系方式留下来.那么问题来了,这样费时费力的工作如果人工去做的话,那么就是花了两天的时间也就找了前30页的数据(还有别的工作要做),然后累的够呛的.本着心疼的原则(程序猿能找到妹子就很不错了,所以得心疼着),就想帮着她做点事. 我本身的工作是做游戏客户端开发的,主要使用的开发语言是lua和c++,并没有接触过网页.网站相

紫鸟亚马逊数据魔方 免费的亚马逊关键词工具

亚马逊关键词挖掘 亚马逊产品分析亚马逊竞品词分析  紫鸟数据www.ziniao.com 亚马逊关键词挖掘 亚马逊产品分析亚马逊竞品词分析  紫鸟数据 紫鸟亚马逊数据魔方 众所周知Amazon关键词的选择与分析,对亚马逊卖家账号的运营,有着至关重要的作用.现实中选择大于努力,选对了,就是爆款,订单源源不断的来:选错了,订单和财富是他们的,和你没关系! 工欲善其事,必先利其器.紫鸟亚马逊数据魔方就是这样一款利器,让你用起来得心应手的利器.紫鸟亚马逊数据魔方,是福建紫讯信息技术有限公司旗下的核心产品

亚马逊选品

首先是选品开始,然后-运营-推广-客户服务,每个环节都有配合起来.我打造过爆款的经验,一款选品出来后.如果市场都是新品,做点广告,做点EDM营销,然后找到review,重要的是产品标题优化和页面优化,图片优化不可忽视,能建模就别少那么点钱,你产品顾客看不到都只能看图片的自己想想.推广三位一体,走站内站外,SD,EDM,评论每天保持要2个以上增量,刚刚开始你Rank10万,卖几个后变5W名,接下来好办了,控制各个进度,把你产品推到rank1000不是难事.最低2人以上到3人以上的配合吧.一周到2周