preciazo/readme.md

43 lines
1.6 KiB
Markdown
Raw Normal View History

2023-12-27 22:55:08 +00:00
# preciazo
scrapeo "masivo" de precios y datos en supermercados argentinos
## componentes (en orden de proceso)
2023-12-31 16:02:47 +00:00
- los link scrapers ([coto-link-scraper](./coto-link-scraper/), [dia-link-scraper](./dia-link-scraper/) y [carrefour-link-scraper](./carrefour-link-scraper)) crean listas de links a productos para scrapear
2023-12-27 22:55:08 +00:00
(no hace falta correrlos porque ya hay listas armadas en [data/](./data/))
2024-01-01 05:14:17 +00:00
- [warcificator](./warcificator/) descarga las paginas de productos y genera un archivo [WARC](https://iipc.github.io/warc-specifications/specifications/warc-format/warc-1.0/) con ellas
2023-12-27 22:55:08 +00:00
- el [scraper](./scraper/) procesa estos WARCs, extrayendo varios datos y guardandolos en una base de datos SQLite (definida en [db-datos](./db-datos/schema.ts))
- el [sitio](./sitio/) renderiza páginas a partir de la base de datos y hace gráficos lindos
## setup
hay que instalar [Bun](https://bun.sh/), que lo estoy usando porque hacía que el scraper corra más rápido. quizás en el futuro lo reemplace con good old Node.js.
aparte, se necesita zstd, que se usa para comprimir los WARCs eficientemente. seguro está disponible en las repos de tu distro favorita :)
empezá descargando un WARC con 50 páginas de sample, y recomprimilo con zstd:
```
wget --no-verbose --tries=3 --delete-after --input-file ./data/samples/Dia.txt --warc-file=dia-sample
2023-12-28 01:16:20 +00:00
gzip -dc dia-sample.warc.gz | zstd --long -15 --no-sparse -o dia-sample.warc.zst
2023-12-27 22:55:08 +00:00
```
después, scrapealo a una BD:
```
cd scraper/
bun install
2023-12-28 01:16:20 +00:00
bun cli.ts scrap ../dia-sample.warc.zst
2023-12-27 22:55:08 +00:00
```
ahora miralo en el sitio:
```
cd sitio/
bun install
2023-12-30 14:28:14 +00:00
bun dev
2023-12-27 22:55:08 +00:00
```