Untitled
unknown
plain_text
2 years ago
1.7 kB
26
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): params = { 'nm': '148420357', } self.__create_csv() while True: response = requests.get('https://product-order-qnt.wildberries.ru/v2/by-nm/', params=params) 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...