Генерирует CSV с указанными столбцами
This commit is contained in:
parent
2934ae7c32
commit
842c1e4395
@ -56,27 +56,47 @@ def scrape_all_pages(base_url, max_pages=5):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("Кнопка 'Следующая' не найдена или конец каталога:", e)
|
print("Кнопка 'Следующая' не найдена или конец каталога:", e)
|
||||||
break
|
break
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
driver.quit()
|
driver.quit()
|
||||||
|
|
||||||
return all_laptops_specs
|
return all_laptops_specs
|
||||||
|
|
||||||
def save_to_csv(data, filename):
|
def save_to_csv(data, filename, ignore_fields=None):
|
||||||
# Сбор всех уникальных заголовков
|
# Устанавливаем игнорируемые поля, если они не заданы
|
||||||
fieldnames = set()
|
if ignore_fields is None:
|
||||||
for row in data:
|
ignore_fields = []
|
||||||
fieldnames.update(row.keys())
|
|
||||||
|
# Фиксированные заголовки
|
||||||
|
fieldnames = [
|
||||||
|
"processor", "ram", "os", "ssd",
|
||||||
|
"display", "gpu", "price"
|
||||||
|
]
|
||||||
|
|
||||||
# Сохранение данных в CSV
|
# Сохранение данных в CSV
|
||||||
with open(filename, mode='w', newline='', encoding='utf-8') as file:
|
with open(filename, mode='w', newline='', encoding='utf-8') as file:
|
||||||
writer = csv.DictWriter(file, fieldnames=fieldnames)
|
writer = csv.DictWriter(file, fieldnames=fieldnames)
|
||||||
writer.writeheader() # Записываем заголовок
|
writer.writeheader() # Записываем заголовок
|
||||||
|
|
||||||
for row in data:
|
for row in data:
|
||||||
writer.writerow(row)
|
# Убираем игнорируемые поля и добавляем пропущенные характеристики
|
||||||
|
complete_row = {
|
||||||
|
"processor": row.get("Процессор", ""),
|
||||||
|
"ram": row.get("Оперативная память", ""),
|
||||||
|
"os": row.get("Операционная система", ""),
|
||||||
|
"ssd": row.get("Диск", ""),
|
||||||
|
"display": row.get("Экран", ""),
|
||||||
|
"gpu": row.get("Графический процессор", ""),
|
||||||
|
"price": row.get("Цена", ""),
|
||||||
|
}
|
||||||
|
|
||||||
|
# Убираем поля, которые нужно игнорировать
|
||||||
|
filtered_row = {k: v for k, v in complete_row.items() if k not in ignore_fields}
|
||||||
|
writer.writerow(filtered_row)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
url = 'https://www.citilink.ru/catalog/noutbuki/?ref=mainpage'
|
url = 'https://www.citilink.ru/catalog/noutbuki/?ref=mainpage'
|
||||||
laptops = scrape_all_pages(url, max_pages=2) # Установите количество страниц
|
laptops = scrape_all_pages(url, max_pages=2)
|
||||||
save_to_csv(laptops, 'laptops_specs.csv') # Сохраняем в CSV файл
|
ignore_fields = ["Технология Intel", "Комплектация", "Клавиатура"]
|
||||||
|
save_to_csv(laptops, 'laptops.csv', ignore_fields)
|
||||||
print(f"Данные сохранены в файл 'laptops_specs.csv'.")
|
print(f"Данные сохранены в файл 'laptops_specs.csv'.")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user