Python. Парсинг. Не записывает корректно в файл csv
Подскажите пожалуйста. Не могу записать в файл csv так, как выводит в консоль.
Записывает вертикально и дублирует одно и тоже 32 раза (количество позиций на странице
import requests
from bs4 import BeautifulSoup
import csv
import pandas as pd
import numpy as np
from csv import writer
from lxml import html
headers = {
'accept': 'image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8',
'user-agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 OPR/94.0.0.0 (Edition Yx 02)'
}
#url = 'https://www.divan.ru/category/krovati-i-matrasy' # делаем запрос на страницу
url = 'https://www.divan.ru/category/krovati'
response = requests.get(url) # обработка запроса метотдом get
soup = BeautifulSoup(response.text, 'lxml') # создаем суп
items = soup.find_all('div', {'class': 'i4dRQ'})
item = soup.find_all('div', {'class' : 'LlPhw'})
item1 = soup.find_all('div', {'class' : 'Ap0ij'})
pric = soup.find_all('div', {'class' : 'jRCmL'})
name = soup.find_all('div', {'class': '_w7Rk EdLyJ'})
#name2 = soup.div.img['alt']
# print(i.text)
for i in item:
nami = i.find('a', {'class': 'ImmXq dpmhZ b8BqN ProductName'}).text.strip()
itempric = i.find('div', {'class' : 'J81A2'}).text.strip()
itempric1 = i.find('span', {'class' : 'Zq2dF F9ye5 RqhWy AawBX'}).text
print(f'{nami} {itempric1}')
pagination = soup.find('div', class_='dqBvL').find_all('a')
pages = pagination[-2].text
print('Всего страниц: ' + pages)
data = []
for page in range(1, int(pages)+1):
response = requests.get(url, headers=headers, params={'PAGEN_1': page})
html = response.text
soup = BeautifulSoup(html, 'html.parser')
blocks = soup.find('div', class_= 'Lei8X').find_all('div', class_='LlPhw')
# print(f'Парсинг страницы {page} из {pages}...')
# print(len(blocks) * page)
for block in blocks:
data.append([block.find('a', class_='ImmXq dpmhZ b8BqN ProductName').get_text(strip=True) + block.find('span', class_='Zq2dF F9ye5 RqhWy AawBX').get_text(strip=True)])
with open('n.csv', 'a', newline='') as csvfile:
for d in data:
print(d)
print('Всего позиций: ' + str(len(data)))
file_writer = csv.writer(csvfile, delimiter=";", lineterminator="\r")
file_writer.writerow(i)
