как объеденить полученные данные с парсера продуктов в один файл csv в пайтоне?
with open("all_items_in_1.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 = [",", " ", "-", "'"]
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", encoding="utf-8") as file:
file.write(src)
with open(f"data/{count}_{category_name}.html", encoding="utf-8") as file:
src = file.read()
soup = BeautifulSoup(src, "lxml" )
head_name = soup.find(class_="product-page-info__title mb-15 text-center text-lg-left").text
sku_name = soup.find(class_="product-page-info__sku mb-5").find("span").text
price_name = soup.find(class_="product-page-info__price text-center text-lg-left").text
size_name = soup.find(class_="product-options__section d-flex flex-wrap").text
with open(f"data/{count}_{category_name}.csv", "w", encoding="utf-8") as file:
writer = csv.writer(file)
writer.writerow(
{
head_name,
sku_name,
price_name,
size_name
}
)
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))
Ответы (1 шт):
Автор решения: Константин Николаевич Бояр II
→ Ссылка
Если у вас в двух файлах одинаковое количество столбцов, то можно попробовать наполнять один список для 2 категорий, и его уже выгружать в csv файл, выглядеть это будет примерно так:
import csv
import pandas as pd
list = []
file_name = 'yourName'
for product in all_products:
*Тут данные которые вы забираете*
rows = row1, row2, row3
list.append(rows)
for product in second_catecory:
*Данные с другой категории товара*
row_second_category = row1, row2, row3
list.append(rows)
df = pd.DataFrame(list,
columns=['Row1','Row2', 'Row3'])
df.to_csv(file_name, encoding='UTF-8')
print(f'file saved to {file_name}.csv')
