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)
我需要的是使用 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)