import requests, json, time HDRS={"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 Chrome/126 Safari/537.36"} vendors={} page=1 while page<80: r=requests.get(f"https://www.signelocal.com/products.json?limit=250&page={page}",headers=HDRS,timeout=25) ps=r.json().get("products",[]) if not ps: break for p in ps: v=p["vendor"] d=vendors.setdefault(v,{"vendor":v,"product_types":set(),"n":0,"sample_products":[]}) d["n"]+=1 if p.get("product_type"): d["product_types"].add(p["product_type"]) if len(d["sample_products"])<3: d["sample_products"].append(p["title"]) page+=1; time.sleep(0.3) for v in vendors.values(): v["product_types"]=sorted(v["product_types"]) print("pages:",page,"vendors:",len(vendors)) with open("data/raw/signelocal_vendors.json","w") as f: json.dump(list(vendors.values()),f,ensure_ascii=False,indent=1)