2

我正在尝试使用亚马逊 MWS 制作一个网络应用程序。用户可以在这个应用程序中添加、列出、删除他们的产品,还可以列出他们的订单。

为了列出他们的产品,我尝试将 Reports API 与“_GET_MERCHANT_LISTINGS_DATA_”一起使用。但是这种方法返回的结果是非常糟糕的制表符分隔响应。而且当我使用 RequestReport 方法提出请求时,它会将列表报告发送给店主。

这是虚拟响应示例:

b'item-name\titem-description\tlisting-id\tseller-sku\tprice\tquantity\topen-date\timage-url\titem-is-marketplace\tproduct-id-type\tzshop-shipping-fee\titem-note\titem-condition\tzshop-category1\tzshop-browse-path\tzshop-storefront-feature\tasin1\tasin2\tasin3\twill-ship-internationally\texpedited-shipping\tzshop-boldface\tproduct-id\tbid-for-featured-placement\tadd-delete\tpending-quantity\tfulfillment-channel\nPropars deneme urunu 2 CD-ROM CD-ROM\tThis is a development test product\t0119QL9BRT8\tPARS12344321\t0.5\t9\t2016-01-19 05:26:44 PST\t\ty\t4\t\t\t11\t\t\t\tB01ATBY2NA\t\t\t1\t\t\t8680925084020\t\t\t0\tDEFAULT\n'

有没有人知道在商店中列出产品的另一种方法,或者您有什么建议可以从“_GET_MERCHANT_LISTINGS_DATA_”报告中获得更好的结果?

或者我该如何解析这个制表符分隔的字符串?

谢谢。

4

1 回答 1

0

从亚马逊获取批量数据确实有两种选择,制表符分隔和 xml。实际上,Excel 中的制表符分隔读取非常好,将值拆分为可用格式的例程非常简单。不幸的是,亚马逊不会在每个报告中为您提供 XML 或平面文件的选项,因此在大多数情况下您必须同时使用这两种文件。

首先,您的标题表明您需要列出所有活动和非活动列表。这将是报告的组合。如果您想要“全包”,包括问题列表、活动列表、隐藏列表和取消列表,您将需要三份报告:

  • _GET_MERCHANT_LISTINGS_DATA_
  • _GET_MERCHANT_CANCELLED_LISTINGS_DATA_
  • _GET_MERCHANT_LISTINGS_DEFECT_DATA_

所有这些都是平面文件格式,因此您将有一个一致的方法来读取数据。在 c# 中,您只需读取一行,拆分该行并读取每个数组值。在 python 中将有一种类似的方法来执行此操作,这很可能在 SO 上有很好的记录。c# 方法看起来像这样:

while ((line = file.ReadLine()) != null)
{
    if (counter == 0)
    {
       string[] tempParts = line.Split(delimiters);
       for (int i = 0; i < tempParts.Length; i++)
       {
           tempParts[i] = tempParts[i].Trim(); //Clean up remaining whitespace.
       }
       //Try and verify headers have not changed.
       if (!isReportHeaderValid(tempParts))
       {
           reportStatus.IsError = true;
           reportStatus.Exception = new Exception("Report Column headers were not validated!!!!");
        return;
       }
       counter++;
       continue;
   }
   counter++;
   string[] parts = line.Split(delimiters);
   for (int i = 0; i < parts.Length; i++)
   {
      parts[i] = parts[i].Trim(); //Clean up remaining whitespace.
   }
   //Do stuff with parts[1], parts[2] etc
}

这是我使用亚马逊库​​存报告的一段代码中的一个示例。基本上,我验证标题是我所期望的(表明报告格式没有改变),然后我拆分,清理空白,并使用拆分中的每个元素。

Python拆分方法: Python拆分

或者,您可能会获取整个流并将其直接粘贴到 Excel 电子表格中,因为 Excel 了解如何在制表符上定界。

编辑

请注意,在我的代码示例中,我将“分隔符”传递给拆分例程,但我从未定义它。它被定义为char[] delimiters = new char[] { '\t' };

于 2016-03-07T15:44:17.483 回答