woocommerce 休息 api python 获取产品

woocommerce rest api python get products

我需要的是使用 python 获得所有 'instock' 的产品 IDs。 它看起来像这样:

wcapi.get('products', params={"per_page": 100, 'stock_status': 'instock', 'tag': '1111'}).json()

此代码有效,但有 max limit 100 per_page,我不明白如何获取其余代码(库存中约 2k 件商品)以及此请求 returns 有关产品的所有信息,但我只需要 IDs.

docs 之后,我看到您还可以传递一个 页面 参数。

这使得迭代所有页面变得非常简单:

page = 0
While True:
  products = wcapi.get('products', params={'per_page': 100, 'stock_status': 'instock', 'tag': '1111', 'page': page}).json()
  # retrieve ids from **products**
  if len(products) == 0: # no more products
    break
  page = page + 1

编辑:请记住,这将在每个循环中处理 每页 (在本例中为 100 个)产品。

有几种方法可以解决这个问题 您可以根据您的用例在一次调用或多次调用中获取所有产品

例如,您希望一次调用获取 2k 条记录

products = wcapi.get('products', params={'per_page': 2000, 'stock_status': 'instock', 'tag': '1111', 'page': page}).json()

但上述方法不够好,因为产品数量可能会不时变化,因此限制要获取的产品并不是长期的好解决方案 运行。

因此更好的解决方案是通过多次调用来获取产品详细信息

page = 1 #The first page number to loop is page 1 
products = []
while True:
    prods = wcapi.get('products', params={'per_page': 100, 'stock_status': 'instock', 'tag': '1111', 'page': page}).json()
    page += 1
    if not prods:
        break
    products.append(prods)

获取所有产品列表后,您可以获取 product_ids 赞

product_ids = [product['id'] for product in products]

我使用这种方法是因为我有大量的产品,并且在 while 循环中不断断开连接。

import pandas as pd

def get_product_ids(start, stop):
    my_list = []
    for page in range(start, stop):
        response = wcapi.get("products", params={"per_page": 1, "page": page}).json()[0]
        print(f"Page: {page}", end='\r')
        my_list.append(response['id'])
        df = pd.DataFrame({"Product_ids": my_list})
        df.to_csv(f'WooCommerce_product_ids_{stop}.csv', index=False)

get_product_ids(start=22001, stop=23001)