亚马逊开发踩坑实录

2019-02-28  本文已影响0人  独孤游侠

1.监控历史跟卖卖家 当前跟卖状态 如何确认是否已退出?
方案一:每次落库数据时留下updateTime,假定两次连续的监控任务时间周期是稳定的为t.则当前时间戳-周期时长t代表的秒数>记录的updateTime 则认为退出跟卖 因为最后更新时间已经超过两次监控了.退出时间为updateTime+t代表的秒数

方案二:监控任务标记批次task_no.同批次监控到的跟卖卖家都更新为当前监控任务的批次.当一个卖家的task_no不属于最后两次的任务批次 则认为退出跟卖 因为卖家数据已经连续两个任务批次未更新了.退出时间为倒数第二个任务批次的记录的最后更新时间.

方案二更好,不会受到监控任务执行并不稳定这个因素影响

# 退出状态和时间新逻辑: 每个数据都记录所在爬虫任务发起的时间,同一批次任务的数据,有相同的任务时间
# mongo为最新数据. 取任务时间倒叙 limit2条.即最后的两次任务.如果记录的任务时间属于这两次任务.即认为还在跟卖,否则为退出跟卖.
# 最近退出时间为最后退出任务批次的update时间
# 取倒数两次任务 而不是最后一次任务的原因是   每次任务的数据是单独更新  可能有些卖家仍在跟卖 但数据未更新而已

2.亚马逊产品图片展示:亚马逊的图片分辨率根据URL特定字符变化.

/**
 * 按指定尺寸格式化亚马逊图片链接
 * @param $imgUrl
 * @param int $size
 * @return string|string[]|null
 */
function formatAmzImgUrl($imgUrl, $size=150){
    if(!$imgUrl){
        return $imgUrl;
    }
    $feature = '._SL';
    if(strpos($imgUrl, $feature) !== false){
        #有特征标识,替换特征标识+尺寸
        $pattern = '/._SL\w{1,}/';
        $replacement = $feature.$size;
    }else{
        #无特征标识,在末尾图片扩展名前拼上特征标识+尺寸
        $index = strrpos($imgUrl, '.');
        $imgExt = substr($imgUrl, $index);
        $pattern = '/'.$imgExt.'/';
        $replacement = $feature.$size.$imgExt;
    }
    $newImgUrl =  preg_replace($pattern, $replacement, $imgUrl);
    return $newImgUrl;
}

3.汇率转换

/*
 * 货币汇率换算
 * @param from string 货币转入币种
 * @param to   string 货币转出币种
 * @param amount int  转换金额
 * @return number number_format 实时汇率
 * */
function convertCurrency($from, $to, $amount){
    $data = file_get_contents("http://www.baidu.com/s?wd={$from}%20{$to}&rsv_spt=1");
    preg_match("/<div>1\D*=(\d*\.\d*)\D*<\/div>/",$data, $converted);
    $converted = preg_replace("/[^0-9.]/", "", $converted[1]);
    $rate = number_format($converted, 4);
    $price = $rate * $amount;
    return $price;
}

4.库存查询
FBM商品库存
GET_MERCHANT_LISTINGS_ALL_DATA
GET_FLAT_FILE_OPEN_LISTINGS_DATA
GET_MERCHANT_LISTINGS_DATA
GET_MERCHANT_LISTINGS_DATA_BACK_COMPAT
GET_MERCHANT_LISTINGS_DATA_LITE
GET_MERCHANT_LISTINGS_DATA_LITER
GET_CONVERGED_FLAT_FILE_SOLD_LISTINGS_DATA
其中quantity有值即为FBM库存 >=0
为空字符串为FBA商品 库存在其他地方查询

FBA商品库存
ListInventorySupply 拿上面quantity为空的SKU去查

可售数 以上库存为可售
待调仓 GET_FBA_FULFILLMENT_INVENTORY_ADJUSTMENTS_DATA
调仓中 GET_FBA_FULFILLMENT_INVENTORY_ADJUSTMENTS_DATA
待发货 查看订单报告 orderStatus=Unshipped
入库中 GET_FBA_MYI_UNSUPPRESSED_INVENTORY_DATA

[sku] => Test-PHO_074RRQLI-AF1
            [fnsku] => X00224RGDH
            [asin] => B07MFLDJTV
            [product-name] => LED Under Cabinet Lighting, LED Puck Lights - Litake, Battery Powered LED Closet Light with Remote Control Dimmable 3000-6000K Warm to Nature White (6 Pack)
            [condition] => New
            [your-price] => 25.99
            [mfn-listing-exists] => No
            [mfn-fulfillable-quantity] => 
            [afn-listing-exists] => Yes
            [afn-warehouse-quantity] => 0
            [afn-fulfillable-quantity] => 0
            [afn-unsellable-quantity] => 0
            [afn-reserved-quantity] => 0
            [afn-total-quantity] => 30
            [per-unit-volume] => 0.11
            [afn-inbound-working-quantity] => 30
            [afn-inbound-shipped-quantity] => 0
            [afn-inbound-receiving-quantity] => 0

不可售

5.商品关系处理
sku才为库存管理最小单位 而不是sku
整理父子关系用商品接口 GetMatchingProductForId 其中有个血统字段.可以判断是父子还是单品的商品类型.假如一个asin查到是变体,但其父asin在库存报告里不存在.则该认为他是单体.其父体可能已经被删除了.对应的亚马逊后台库存列表.这些商品也没有父子关系展开效果

6.可售踩坑
默认库存数>0为可售.当前出现了报告和接口查询 变体子体库存为0 但变体父体库存>0的情况.只想说一句,亚马逊 真他娘的恶心.

7.父子关系处理.排序功能
看商品特征的 使用极值 如价格 库存
看商品统计特征的 使用累加 如销量
...亚马逊 狗屎狗屎

上一篇下一篇

猜你喜欢

热点阅读