Untitled
unknown
plain_text
2 years ago
1.7 kB
9
Indexable
import requests
import re
import csv
import pydantic
from pydantic import BaseModel
class Item(BaseModel):
nmId: int
qnt: int
class Items(BaseModel):
orders: list[Item]
class parseWB:
def __init__(self, url: str):
self.nm_id = self.get__nm_id(url)
return self.nm_id
@staticmethod
def __get_item_id(url:str):
regex = "(?<=catalog/).+(?=/deta)"
item_id = re.search(regex, url)[0]
return item_id
def get__nm_id(self, url):
respose = requests.get(url=f"https://product-order-qnt.wildberries.ru/v2/by-nm/?nm={self.__get_item_id(url=url)}")
nm_id = Items.model_validate(respose.json())
return nm_id.orders[0].nmId
def parse(self):
self.__create_csv()
while True:
response = requests.get('https://product-order-qnt.wildberries.ru/v2/by-nm/?nm={self.get__nm_id}')
items_info = Items.model_validate(response.json())
if not items_info.orders:
break
self.__save_csv(items_info)
def __create_csv(self):
with open ("data.csv", mode = "w", newline="") as file:
writer = csv.writer(file)
writer.writerow(['nmId','qnt'])
def __save_csv(self, items):
with open("data.csv", mode="a", newline="") as file:
writer = csv.writer(file)
for product in items.orders:
writer.writerow([orders.nmId,
orders.qnt])
if __name__ == "__main__":
parseWB("https://www.wildberries.ru/catalog/148420357/detail.aspx").parse()Editor is loading...