Как до записывать в файл csv данные при парсинге новой страницы?
Сейчас при парсинге каждой новой ссылки создается новый файл и данные записываются в него. Мне же нужно записать данные с этих страниц в один файл.
import requests
from bs4 import BeautifulSoup
import json
import csv
import random
import time
with open("all_categories_dict.json") as file:
all_categories = json.load(file)
iteration_count = int(len(all_categories)) - 1
count = 0
print(f"Всего итерация: {iteration_count}")
for category_name, category_href in all_categories.items():
rep = ["\n"]
for item in rep:
if item in category_name:
category_name = category_name.replace(item, " ")
req = requests.get(url=category_href, headers=headers)
src = req.text
with open(f"data/{count}_{category_name}.html", "w") as file:
file.write(src)
with open(f"data/{count}_{category_name}.html") as file:
src = file.read()
soup = BeautifulSoup(src, "lxml")
products_data = soup.find(class_="table-responsive").find_all("tr")
table_price = soup.find(class_="text-right")
product_info = []
for item in products_data:
product_tds = item.find_all("td")
article = product_tds[0].text
name = product_tds[1].text
price = product_tds[2].text
product_info.append({
"Артикл": article,
"Имя": name,
"Прайс": price
})
with open(f"data/{count}_{category_name}.csv", "a", encoding="utf-8-sig") as file:
writer = csv.writer(file, delimiter=';')
writer.writerow((
article,
name,
price
))
count +=1
print(f"# Итерация {count}. {category_name} записан")
iteration_count = iteration_count - 1
if iteration_count == 0:
print("Работа завершена")
break
print(f'Осталось итераций: {iteration_count}')
time.sleep(random.randrange(2, 4))