Aby napisać skrypt w Pythonie do generowania tysięcy stron, użyj generatora stron statycznych: szablonów HTML, źródeł danych i pętli, która zapisuje każdy plik. To umożliwia masową automatyzację i łatwą aktualizację treści.
Planowanie i architektura
- Zdefiniuj cel: ile stron, tematyka, struktura URL.
- Ustal strukturę katalogów: templates/, data/, output/.
- Wybierz źródło danych: JSON, CSV, YAML lub baza danych.
- Wybierz podejście do szablonów: Jinja2 lub inny szablon HTML.
- Zaplanuj slugowanie i mapowanie treści na adresy URL.
- Dodaj logowanie i obsługę błędów.
Wybór narzędzi i podejścia
- Szablon: Jinja2 zapewnia elastyczność i łatwe renderowanie danych.
- Dane wejściowe: JSON lub CSV umożliwią łatwe masowe generowanie.
- Wydajność: użyj przetwarzania równoległego (multiprocessing) lub chunkingu IO.
- Wyjście: zapisuj pliki HTML bezpośrednio na dysk w katalogu output/.
- Walidacja: prosta walidacja HTML i obecności kluczowych pól.
Struktura projektu
- templates/page.html — szablon HTML dla każdej strony.
- data/pages.json — lista stron z polami title, content, slug, meta.
- output/ — folder z wygenerowanymi plikami HTML.
- generator.py — skrypt generatora.
Przykładowy minimalny skrypt
```python
from jinja2 import Environment, FileSystemLoader
import json
import os
def render_pages(template_dir, output_dir, data_path):
env = Environment(loader=FileSystemLoader(template_dir))
template = env.get_template('page.html')
with open(data_path, 'r', encoding='utf-8') as f:
data = json.load(f)
os.makedirs(output_dir, exist_ok=True)
for item in data:
slug = item.get('slug') or item['title'].lower().replace(' ', '-')
html = template.render(**item)
with open(os.path.join(output_dir, f'{slug}.html'), 'w', encoding='utf-8') as out:
out.write(html)
if __name__ == '__main__':
render_pages('templates', 'output', 'data/pages.json')
```
Wydajność i skalowanie
- Podziel przetwarzanie na partie (np. 1000 stron na raz).
- Użyj multiprocessing do równoległego renderowania, ograniczając zużycie RAM i IO.
- Stosuj streamowanie zapisu tam, gdzie to możliwe.
- Monitoruj zasoby i loguj błędy, aby łatwo identyfikować problemy.
Walidacja i QA
- Sprawdź, czy wygenerowane pliki HTML są poprawne, korzystając z prostych walidatorów.
- Weryfikuj, że wszystkie linki prowadzą do istniejących plików.
- Testuj na ograniczonym zestawie stron przed pełnym uruchomieniem.
Bezpieczeństwo i SEO
- Dodaj odpowiednie tytuły i meta opisy dla każdej strony.
- Ustaw kodowanie znaków na UTF-8 i prawidłowe nagłówki HTML.
- Generuj unikalne slug i canonical URL dla każdej strony.
Uruchomienie i utrzymanie
- Uruchamiaj generator w kontrolowanym środowisku z ograniczonymi zasobami.
- Twórz kopie zapasowe szablonów i danych wejściowych.
- Automatyzuj uruchomienia (np. cron) i monitoruj przebieg generowania.