Compare commits

..

3 commits

Author SHA1 Message Date
c75f8c335c Ponlo en automático, sé mi fanático
¿Cómo se siente si rebotan los neumático'?
A 150 aunque no haya prisa
Y que solo sean testigos los parabrisa'
2023-12-25 02:59:57 -03:00
a8d26f32a5 mover logica de supermercado a db-datos 2023-12-25 00:15:19 -03:00
1d4133e1c8 renombrar listas a sus strings 2023-12-25 00:14:56 -03:00
13 changed files with 619 additions and 35 deletions

4
.gitignore vendored
View file

@ -11,4 +11,6 @@ node_modules/
scraper/debug/
scraper/x.tsv
*.tmp
target/
target/
.env
.env*

BIN
bun.lockb

Binary file not shown.

View file

@ -0,0 +1,50 @@
https://www.carrefour.com.ar/bebida-lactea-la-serenisima-frutilla-sachet-900-cc-734210/p
https://www.carrefour.com.ar/bebida-lactea-la-serenisima-frutilla-brick-200-cc-734218/p
https://www.carrefour.com.ar/bebida-lactea-la-serenisima-vainilla-brick-200-cc-734215/p
https://www.carrefour.com.ar/bebida-lactea-la-serenisima-vainilla-sachet-900-cc-734204/p
https://www.carrefour.com.ar/leche-protein-c-chocolate-la-serenisima-bot-larga-vida-1-l/p
https://www.carrefour.com.ar/leche-chocolatada-cindor-50-mas-cacao-1-lt-721741/p
https://www.carrefour.com.ar/leche-chocolatada-cindor-mocca-1-lt-724419/p
https://www.carrefour.com.ar/bebida-lactea-la-serenisima-sense-caramel-1-l/p
https://www.carrefour.com.ar/bebida-lactea-la-serenisima-ultra-0-grasa-vainilla-900-cc/p
https://www.carrefour.com.ar/leche-chocolatada-la-serenisima-clasico-1-lt-728990/p
https://www.carrefour.com.ar/leche-fermentada-kids-mix-de-frutas-actimel-100-g-724919/p
https://www.carrefour.com.ar/milkshake_sabor_frutilla_nesquik_brick_x_190_cc_707121/p
https://www.carrefour.com.ar/bebida-a-base-de-almendras-cindor-sabor-chocolate-1-lt-721995/p
https://www.carrefour.com.ar/leche-chocolatada-la-serenisima-clasico-200-ml-728991/p
https://www.carrefour.com.ar/leche-chocolatada-cindor-50-mas-cacao-200-ml-721740/p
https://www.carrefour.com.ar/milkshake_sabor_banana_nesquik_brick_x_190_cc_707120/p
https://www.carrefour.com.ar/leche-cindor-chocolatada-a-base-de-almendras-y-cacao%E2%80%8B-1-l-704526/p
https://www.carrefour.com.ar/leche-chocolatada-chochoco-tetra-200-cc-726412/p
https://www.carrefour.com.ar/chocolatada-en-polvo-dicomere-leche-de-coco-vegana-150-g-710587/p
https://www.carrefour.com.ar/bebida-lactea-bananita-dolca-185-cc-731527/p
https://www.carrefour.com.ar/leche-de-almendras-silk-endulzada-tetra-1-lt-726379/p
https://www.carrefour.com.ar/leche-de-almendras-silk-de-coco-tetra-1-lt-726380/p
https://www.carrefour.com.ar/alimento-vegetal-silk-fermentado-a-base-de-coco-%E2%80%8B300-g-702734/p
https://www.carrefour.com.ar/la-serenisima-100---vegetal-chocolate-con-mani-1-lt-726421/p
https://www.carrefour.com.ar/bebida-a-base-de-coco-silk-sin-azucar-1-l%E2%80%8B-698743/p
https://www.carrefour.com.ar/leche-chocolatada-cindor-1-lt-719377/p
https://www.carrefour.com.ar/nesquik-extra-cacao-chocolatada-listo-para-tomar-200-ml-724442/p
https://www.carrefour.com.ar/leche-chocolatada-nesquik-fortificado-200-cc-724441/p
https://www.carrefour.com.ar/bebida-lactea-la-serenisima-uat-0-grasa-frutilla-1000-cc/p
https://www.carrefour.com.ar/bebida-lactea-la-serenisima-uat-vainilla-1000-cc/p
https://www.carrefour.com.ar/leche-fermentada-actimel-sabor-frutilla-100-cc-724916/p
https://www.carrefour.com.ar/leche-fermentada-plus-guarana-y-frutos-rojos-actimel-100-g-726736/p
https://www.carrefour.com.ar/leche-fermentada-multifruta-actimel-100-g-724917/p
https://www.carrefour.com.ar/bebida-lactea-la-serenisima-uat-0-grasa-vainilla-1000-cc/p
https://www.carrefour.com.ar/leche-chocotalada-uat-cindor-tetra-200-cc-719376/p
https://www.carrefour.com.ar/alimento-bebible-vegetal-la-serenisima-sabor-coco-1-lt-719131/p
https://www.carrefour.com.ar/leche-en-polvo-la-serenisima-zero-lactosa-400-g-677890/p
https://www.carrefour.com.ar/leche-en-polvo-la-lechera-entera-400-g-721596/p
https://www.carrefour.com.ar/leche-en-polvo-la-lechera-entera-800-g-721597/p
https://www.carrefour.com.ar/bebida-a-base-de-proteinas-lacteas-molico-bolsa-800-g-684792/p
https://www.carrefour.com.ar/golden-milk-dicomere-leche-en-polvo-de-coco-vegano-150-g-710588/p
https://www.carrefour.com.ar/leche-en-polvo-descremada-svelty-370-g-729420/p
https://www.carrefour.com.ar/leche-en-polvo-nido-fortigrow-800-g-725006/p
https://www.carrefour.com.ar/leche-en-polvo-descremada-molico-bolsa-800-g-684793/p
https://www.carrefour.com.ar/leche-en-polvo-sancor-bebe-3-advanced-800-g-706144/p
https://www.carrefour.com.ar/leche-en-polvo-entera-franz-con-vitamina-a-y-d-800-g-707100/p
https://www.carrefour.com.ar/leche-de-almendras-silk-sin-azucar-tetra-1-lt-726378/p
https://www.carrefour.com.ar/alimento-veg-beb-la-serenisima-almendra-s-azucar-1000-cc/p
https://www.carrefour.com.ar/alimento-bebible-a-base-de-almendras-la-serenisima-1-l/p
https://www.carrefour.com.ar/leche-de-almendras-silk-de-coco-sin-azucar-tetra-1-lt-726381/p

250
data/samples/Coto.txt Normal file
View file

@ -0,0 +1,250 @@
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-%0D%0Atraje-de-bano-hombre-rayado-talle-46%0D%0A/_/A-00560152-00560152-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-101-cuentos-cortos-para-compartir/_/A-00509350-00509350-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-101-cuentos-de-magia-y-aventuras/_/A-00509349-00509349-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-128-luces-led-x100-multicolor-3aa---/_/A-00542386-00542386-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-144-luces-led-x100-blancas-3aa---/_/A-00542385-00542385-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-1era-infancia-autobus-intera-mickey-mouse---/_/A-00560856-00560856-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-1era-infancia-cubo-prono-granja---/_/A-00566723-00566723-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-1era-infancia-plush-sleeping-peluche-mickey---/_/A-00560857-00560857-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-1era-infancia-plush-sleeping-peluche-minnie---/_/A-00560858-00560858-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-243-luces-led-x-30-blancas-3aa---/_/A-00542388-00542388-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-24-banditas-elasticas-redondas-sin-metal-basicare/_/A-00515946-00515946-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-3m-cinta-de-enmascarar-18mm-x-40m---caja-precortada/_/A-00456793-00456793-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-3m-cinta-de-enmascarar-24mm-x-40m---caja-precortada/_/A-00456790-00456790-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-3m-cinta-de-enmascarar-36mm-x-40m---caja-precortada/_/A-00456810-00456810-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-3m-cinta-de-enmascarar-48mm-x-40m---caja-precortada/_/A-00456811-00456811-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-3m-cinta-ducto-2910-gris-48mmx91m-%0D%0A/_/A-00478343-00478343-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-3m-cinta-ducto-3920-negra-48mmx18m%0D%0A/_/A-00478344-00478344-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-400-luces-microled-x100blancas3aa---/_/A-00542391-00542391-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-440-luces-microled-x30-blanca-3aa---/_/A-00542387-00542387-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-480-luces-microled-x50-blancas-3a/_/A-00542390-00542390-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-4-en-linea-mini-ruibal/_/A-00112199-00112199-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-840-luces-led-x-50-blancas-3aa---/_/A-00542389-00542389-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-8-hermanos-azul-anis-botella-de-1-litro/_/A-00002315-00002315-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-abadejo-entero-eviscerado-congelado-x-kg/_/A-00017794-00017794-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-abrelata-mariposa-loekemeyer-bli-1-uni/_/A-00005012-00005012-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-abrel-loerem-ua-1-un/_/A-00006716-00006716-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-abrochadora-maped-office-1-unidad-n-10/_/A-00286817-00286817-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-accesorio-stick-masaje-drb-turquesa-gris/_/A-00524517-00524517-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-2t-para-motos-1ltr-bardahl%0D%0A/_/A-00198031-00198031-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-2t-para-motos-200cc-bardahl/_/A-00198032-00198032-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-aerosol-mazola-maiz-rocio-vegetal-aer-120-grm/_/A-00267185-00267185-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-antiadherente-manteca-mazola-aer-120-grm/_/A-00267186-00267186-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-bronceador-fps-4-hawaiian-tropic-240ml/_/A-00467670-00467670-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-canola-virgen-cormillot-bot-250-ml/_/A-00512147-00512147-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-canola-virgen-coto-botella-500-ml/_/A-00218338-00218338-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-canola-virgen-krol---botella-250-ml/_/A-00172850-00172850-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-canola-virgen-krol---botella-500-ml/_/A-00175047-00175047-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-canola-y-ajo-krol-bot-250-ml/_/A-00500950-00500950-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-canola-y-albahaca-krol-bot-250-ml/_/A-00500949-00500949-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-canola-y-cebolla-krol-bot-250-ml/_/A-00500951-00500951-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-canola-y-limon-krol-bot-250-ml/_/A-00500952-00500952-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-de-almendras-landa-30-ml/_/A-00559709-00559709-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-de-argan-landa-30-ml/_/A-00559701-00559701-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-de-dende-cepera-100-ml/_/A-00547003-00547003-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-de-jojoba-landa-30ml/_/A-00559707-00559707-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-de-maiz-arcor-890-ml/_/A-00539092-00539092-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-de-maiz-clasico-mazola-900ml/_/A-00257043-00257043-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-de-oliva-extra-virgen-clasico-500ml/_/A-00572174-00572174-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-de-oliva-extra-virgen-clasico-lira-1l/_/A-00572175-00572175-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-de-oliva-virgen-extra-suave-nucete-500ml/_/A-00296136-00296136-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-de-ricino-landa-30ml/_/A-00559706-00559706-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-de-rosa-mosqueta-landa-30-ml/_/A-00559708-00559708-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-fritolim-manteca-120-gr-fritolim-aer-12-kgm/_/A-00263388-00263388-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-genecelf-multig-20w50-1l-total%0D%0A/_/A-00298157-00298157-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-genecelf-multig-20w50-4l-total%0D%0A/_/A-00298156-00298156-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-girasol--cada-dia--botella-900-ml/_/A-00003033-00003033-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-girasol-coto-aerosol-120-gr/_/A-00179641-00179641-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-girasol-natura-rocio-vegetal-aerosol-120-gr/_/A-00263797-00263797-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-girasol--pureza---botella-15-l/_/A-00497066-00497066-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-girasol--pureza---botella-900-ml/_/A-00497065-00497065-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-maiz-arcor-botella-900-ml/_/A-00247948-00247948-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-maiz--lira-pet-900-ml/_/A-00510431-00510431-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-mezcla-canola-y-chia-virgen-krol---botella-250-ml/_/A-00282204-00282204-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-mezcla-canola-y-oliva--krol---botella-250-ml/_/A-00230679-00230679-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-mezcla-canola-y-oliva--krol---botella-500-ml/_/A-00230680-00230680-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-mezcla-girasol-y-oliva-natura-500-ml/_/A-00481089-00481089-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-mezcla-girasol-y-oliva-natura-botella-900-ml/_/A-00268144-00268144-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-motor-4t-para-motos-1ltr-bardahl%0D%0A/_/A-00198040-00198040-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-andino-natura-500ml/_/A-00576037-00576037-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-de-cecco-extra-virgen-bot-500-ml/_/A-00172205-00172205-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-extra-virgen-clasico-nucete-1000ml/_/A-00562868-00562868-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-extra-virgen-cocinero-1l/_/A-00562395-00562395-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-extra-virgen-cocinero-250ml/_/A-00562394-00562394-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-extra-virgen-cocinero-500ml/_/A-00562393-00562393-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-extra-virgen-colavita--750ml/_/A-00562249-00562249-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-extra-virgen-con-oliva-la-toscana-bot-250-ml/_/A-00480493-00480493-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-extra-virgen-filippo-ber-bot-500-cmq/_/A-00210325-00210325-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-extra-virgen-fruttato-filippo-berio-bot-500-ml/_/A-00195703-00195703-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-extra-virgen-intenso-cocinero-500ml/_/A-00515792-00515792-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-extra-virgen-la-toscana-con-albahaca-botella-250-ml/_/A-00236162-00236162-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-extra-virgen-la-toscana-con-limon-botella-250-ml/_/A-00267254-00267254-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-extra-virgen-morixe-500ml/_/A-00513717-00513717-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-extra-virgen-nucete---lata-500-ml/_/A-00162778-00162778-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-extra-virgen-oliovita-500ml/_/A-00025251-00025251-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-extra-virgen-oliovita-botella-500-ml/_/A-00184369-00184369-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-extra-virgen-oliovita-botella-500-ml/_/A-00194454-00194454-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-extra-virgen-suave-cocinero-500ml/_/A-00515794-00515794-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-extvirg-filippo-ber-bot-250-ml/_/A-00195700-00195700-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-fuerte-natura-500ml/_/A-00576036-00576036-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-la-toscana-con-pesto-botella-250-ml/_/A-00468302-00468302-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva--nucete---lata-500-ml/_/A-00021386-00021386-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-suave-natura-500ml/_/A-00576035-00576035-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-cebila-500ml/_/A-00512396-00512396-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-cocinero-1l/_/A-00562397-00562397-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-extra-blend-zuelo-lat-1000-ml/_/A-00521714-00521714-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-extra-ciudad-del-lago--botella-250-ml/_/A-00485927-00485927-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-extra-ciudad-del-lago--botella-500-ml/_/A-00485926-00485926-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-extra-clasico-nucete-2l/_/A-00510405-00510405-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-extra-coratina-zuccardi-250ml/_/A-00570402-00570402-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-extra-c-zuelo-bot-250-ml/_/A-00511022-00511022-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-extra-c-zuelo-bot-500-ml/_/A-00511013-00511013-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-extra-genovesa-zuccardi-250ml/_/A-00570405-00570405-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-extra-genovesa-zuccardi-500ml/_/A-00570407-00570407-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-extra-intenso-nucete-500ml/_/A-00574739-00574739-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-extra-intenso-zuelo-lat-500-ml/_/A-00521713-00521713-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-extra-i-zuelo-bot-500-ml/_/A-00511018-00511018-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-extra-la-toscana-con-ajo-botella-250-ml/_/A-00236161-00236161-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-extra-nucete---botella-500-ml/_/A-00021215-00021215-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-extra-oliovita-botella-1-l/_/A-00481562-00481562-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-extra-oliovita--botella-250-ml/_/A-00190515-00190515-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-extra-oliovita-botella-250-ml/_/A-00206952-00206952-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-extra-oliovita---botella-500-ml/_/A-00240899-00240899-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-extra-oliovita--botella-500-ml/_/A-00479458-00479458-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-extra-oliovita-mediterraneo-botella-500-ml/_/A-00245154-00245154-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-extra-oliovita-mediterraneo-botella-500-ml/_/A-00465346-00465346-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-extra-organica-zuelo-250-ml/_/A-00534644-00534644-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-extra-organico-zuelo-500-ml/_/A-00534645-00534645-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-extra-picual-zuccardi-250ml/_/A-00570406-00570406-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-extra-piscual-zuccardi-500ml/_/A-00570404-00570404-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-extra-suave-la-toscana-250ml/_/A-00570403-00570403-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-extra-suave-la-toscana-500ml/_/A-00570409-00570409-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-extra-s-zuelo-bot-500-ml/_/A-00511014-00511014-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-natura-aerosol-120-gr/_/A-00283953-00283953-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-oliva-virgen-nucete-1l/_/A-00501317-00501317-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-p-moto-4-cruise-15w50-1l-elf%0D%0A/_/A-00460748-00460748-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-p-moto-4-road-15w50-1l-elf%0D%0A/_/A-00205956-00205956-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-protector-fps10-villeneuve-190ml/_/A-00572159-00572159-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-puro-baby-johnsons-100ml/_/A-00568122-00568122-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-quartz-9000-5w40-1l-total%0D%0A/_/A-00242672-00242672-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-rocio-vegetal--canuelas-girasol-aerosol-187-ml/_/A-00484971-00484971-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-rocio-vegetal--nucete-oliva-aerosol-150-ml/_/A-00482859-00482859-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-rocio-vegetal-sabor-manteca-lira-aer-120-grm/_/A-00529622-00529622-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-rocio-vegetal-virgen-extra-canuelas---aerosol-187-ml/_/A-00484970-00484970-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceites-de-dende-palm-cepera-200-cmq/_/A-00134316-00134316-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-total-quartz-5000-15w-40-4-l/_/A-00473185-00473185-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-total-quartz-7000-10w40-1l-total%0D%0A/_/A-00195391-00195391-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-total-quartz-7000-10w-40-4-l/_/A-00195390-00195390-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-total-quartz-9000-5w-40-4-l/_/A-00265946-00265946-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceite-total-quartz-ineo-mc3-5w-30-4-l/_/A-00473195-00473195-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-negras-a-la-italiana-castell-340g/_/A-00573358-00573358-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-negras-a-la-it-castell-fra-340-grm/_/A-00515751-00515751-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-negras-castell-pouch-200-gr/_/A-00086460-00086460-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-negras-castell-pouch-300-gr/_/A-00100351-00100351-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-negras-descarozadas-nucete-360g/_/A-00101924-00101924-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-negras-en-salmuera-nucete-220-grm/_/A-00548385-00548385-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-negras-nucete-------frasco-330-gr/_/A-00101922-00101922-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-negras-premium-castell-340g/_/A-00573359-00573359-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-negras-premium-castell-fra-340-grm/_/A-00515749-00515749-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-negras-vanoli-150-gr/_/A-00263031-00263031-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-negras-vanoli-------frasco-330-gr/_/A-00298223-00298223-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-negras-yovinessa-frasco-330-gr/_/A-00234350-00234350-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-rellenas-c-atun-stabz-lat-200-grm/_/A-00528745-00528745-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-rellenas-con-alcaparras-stabz-lat-200-grm/_/A-00528743-00528743-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-rellenas-con-anchoas-stabz-200-grm/_/A-00528744-00528744-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-rellenas-con-jalapenos-stabz-lat-200-grm/_/A-00528740-00528740-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-rellenas-con-morrones-castell-300gr/_/A-00100352-00100352-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-rellenas-con-pasta-de-limon-stabz-200-grm/_/A-00545116-00545116-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-rellenas-con-pimientos-stabz-lat-200-grm/_/A-00528739-00528739-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-rellenas-con-salmon-stabz-lat-200-grm/_/A-00528741-00528741-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-a-la-italiana-castell-340g/_/A-00573361-00573361-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-a-la-it-castell-fra-340-grm/_/A-00515750-00515750-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-castell----en-rodajas---pouch-180-gr/_/A-00086457-00086457-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-castell----en-rodajas---pouch-300-gr/_/A-00220073-00220073-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-castell-------pouch-200-gr/_/A-00063853-00063853-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-castell-rellena-morrones-----pouch-200-gr/_/A-00086459-00086459-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-cebila-180g/_/A-00491175-00491175-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-descarozadas-castell-180gr/_/A-00086458-00086458-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-descarozadas-cebila-150-gr/_/A-00491177-00491177-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-descarozadas-nucete-220g/_/A-00548383-00548383-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-descarozadas-nucete-360g/_/A-00101923-00101923-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-en-rodajas-nucete-220-grm/_/A-00548387-00548387-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-en-salmuera-nucete-220g/_/A-00548386-00548386-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-nucete---descarozada----frasco-330-gr/_/A-00072401-00072401-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-nucete---descarozada----sachet-180-gr/_/A-00030099-00030099-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-nucete-------frasco-330-gr/_/A-00072400-00072400-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-nucete-----premium-frasco-360-gr/_/A-00165846-00165846-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-nucete-rellena-morrones---premium-frasco-360-gr/_/A-00104033-00104033-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-para-ensaladas-nucete-220g/_/A-00548382-00548382-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-premium-castell-340g/_/A-00573362-00573362-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-premium-castell-fra-340-grm/_/A-00515753-00515753-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-premium-yovinessa-fra-360-grm/_/A-00515762-00515762-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-rellena-castell-fra-340-grm/_/A-00515752-00515752-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-rellenas-cebila-100-gr/_/A-00485900-00485900-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-rellenas-cebila-180-gr/_/A-00486164-00486164-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-rellenas-con-morron-yovinessa-330g/_/A-00209031-00209031-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-rellenas-con-pasta-de-ajo-nucete-330-grm/_/A-00548389-00548389-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-rellenas-con-pasta-de-cebolla-nucete-330-grm/_/A-00548390-00548390-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-rellenas-con-pasta-de-jalapeno-nucete-330-grm/_/A-00548391-00548391-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-rellenas-con-pasta-de-morron-nucete-220-grm/_/A-00548384-00548384-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-rellenas-con-pasta-sabor-limon-nucete-330-grm/_/A-00548381-00548381-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-rellenas-premium-castell-340g/_/A-00573360-00573360-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-rellena-yovinessa-fra-360-grm/_/A-00515761-00515761-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-vanoli-300g/_/A-00262716-00262716-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-vanoli---descarozada----pouch-150-gr/_/A-00262801-00262801-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-vanoli-en-rodajas-frasco-330-gr/_/A-00465097-00465097-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-vanoli-----linea-selecta-frasco-320-gr/_/A-00271683-00271683-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-vanoli-pouch-150-gr/_/A-00262715-00262715-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-vanoli-rellena-morrones-descarozada----pouch-300-gr/_/A-00261901-00261901-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-vanoli-rellenas-330-gr/_/A-00261904-00261904-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-vanoli-tradicional-330-gr/_/A-00261902-00261902-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-yovinessa-descarozada-frasco-330-gr/_/A-00007090-00007090-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-yovinessa-descarozada-frasco-330-gr/_/A-00209034-00209034-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-yovinessa---descarozada----sachet-150-gr/_/A-00247702-00247702-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-yovinessa----en-rodajas---sachet-80-gr/_/A-00247700-00247700-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-yovinessa-------frasco-330-gr/_/A-00007088-00007088-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-yovinessa-------pouch-250-gr/_/A-00007106-00007106-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-yovinessa-------pouch-900-gr/_/A-00241661-00241661-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-yovinessa-premium-frasco-330-gr/_/A-00212532-00212532-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-yovinessa-premium-frasco-660-gr/_/A-00209035-00209035-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceitunas-verdes-yovinessa-sachet-130-gr/_/A-00242498-00242498-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceituna-verde-castell-300gr/_/A-00100354-00100354-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceituna-verde-descarozadas-castell-300gr/_/A-00100353-00100353-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceituna-verde-descarozadas-castell-850gr/_/A-00235212-00235212-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceituna-verdes-rellenas-con-morrones-yovinessa-160g/_/A-00007108-00007108-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-acelga-congelada-granja-del-sol-500g/_/A-00565168-00565168-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-acelga-congelada-lucchetti-450g/_/A-00565184-00565184-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-acelga-fresca-santa-maria-bol-300-grm/_/A-00532418-00532418-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-acelga-green-life-550g/_/A-00578347-00578347-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-acelga-hidroponica-pack-choi-compostela-1u/_/A-00572941-00572941-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-acelga-lavada-y-cortada-sueno-verde-x-400-gr/_/A-00186721-00186721-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-acelga-rie-la-huerta-500g/_/A-00576905-00576905-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-acelga-x-uni/_/A-00040156-00040156-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceto-balsamico-a-base-de-crema-antichi-colli-bot-250-ml/_/A-00531990-00531990-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceto-balsamico-ahumado-casalta-400-cc/_/A-00210064-00210064-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceto-balsamico-clasico-casalta-500ml/_/A-00567777-00567777-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceto-balsamico-de-modena-colavita-500ml/_/A-00213419-00213419-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceto-balsamico-di-modena-fini-500-ml/_/A-00547011-00547011-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceto-balsamico-di-modena-san-giorgio-250-ml/_/A-00546999-00546999-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceto-balsamico-enrico-baronese-chardonnay-375-cc/_/A-00119600-00119600-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceto-balsamico-enrico-baronese-malbec-375-cc/_/A-00119599-00119599-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceto-balsamico-filippo-ber-bot-250-ml/_/A-00196110-00196110-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceto-balsamico-la-toscana-250-ml/_/A-00494654-00494654-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceto-balsamico-menoyo-250-cc/_/A-00198472-00198472-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceto-balsamico-menoyo-500-cc/_/A-00201560-00201560-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceto-balsamico-oliovita-250ml/_/A-00569750-00569750-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceto-balsamico-reduccion-enrico-baronese-bot-375-cmq/_/A-00532960-00532960-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceto-balsamico-reduccion-menoyo-250-ml/_/A-00497571-00497571-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceto-balsamico-reduccion-menoyo-250-ml/_/A-00497596-00497596-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceto-balsamico-reduccion-oliovita-250ml/_/A-00569739-00569739-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceto-balsamico-san-giorgio-bot-250-ml/_/A-00524780-00524780-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceto-balsamico-san-giorgio-frutos-de-bosque-andino-250-cc/_/A-00133800-00133800-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceto-balsamico-tipo-reduccion-casalta-500ml/_/A-00567779-00567779-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceto-con-humo-liquido-san-giorgio-250-ml/_/A-00546995-00546995-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceto-glaze-basil-pe-de-nigris-pet-250-ml/_/A-00489739-00489739-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceto-glaze-fusion-s-de-nigris-pet-250-ml/_/A-00489748-00489748-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceto-manzana-granny-enrico-baro-bot-375-cmq/_/A-00476420-00476420-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceto-reduccion-casalta-bot-400-cmq/_/A-00210065-00210065-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-aceto-reduccion-lira-250-ml/_/A-00539903-00539903-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-ackids-proteccion-nat-plusbelle-bot-700-ml/_/A-00512470-00512470-200
https://www.cotodigital3.com.ar/sitios/cdigi/producto/-acondicionador-aclarante-tio-nacho-400ml/_/A-00572067-00572067-200

50
data/samples/Dia.txt Normal file
View file

@ -0,0 +1,50 @@
https://diaonline.supermercadosdia.com.ar/aceite-de-girasol-canuelas-15-lts-73552/p
https://diaonline.supermercadosdia.com.ar/aceite-de-girasol-cocinero-900-ml-48605/p
https://diaonline.supermercadosdia.com.ar/aceite-de-girasol-cocinero-alto-oleico-15-lts-267710/p
https://diaonline.supermercadosdia.com.ar/aceite-de-girasol-dia-15-lts-24114/p
https://diaonline.supermercadosdia.com.ar/aceite-de-girasol-dia-900-ml-226068/p
https://diaonline.supermercadosdia.com.ar/aceite-de-girasol-legitimo-900-ml-56453/p
https://diaonline.supermercadosdia.com.ar/aceite-de-girasol-lira-15-lts-264923/p
https://diaonline.supermercadosdia.com.ar/aceite-de-girasol-natura-15-lts-78856/p
https://diaonline.supermercadosdia.com.ar/aceite-de-girasol-pureza-15-lts-265505/p
https://diaonline.supermercadosdia.com.ar/aceite-de-girasol-pureza-900-ml-265504/p
https://diaonline.supermercadosdia.com.ar/aceite-de-maiz-lira-900-ml-270738/p
https://diaonline.supermercadosdia.com.ar/aceite-de-oliva-cocinero-extra-virgen-intenso-500-ml-276153/p
https://diaonline.supermercadosdia.com.ar/aceite-de-oliva-cocinero-extra-virgen-suave-500-ml-276154/p
https://diaonline.supermercadosdia.com.ar/aceite-de-oliva-extra-virgen-cocinero-500-ml-296498/p
https://diaonline.supermercadosdia.com.ar/aceite-de-oliva-extra-virgen-lira-500-ml-299225/p
https://diaonline.supermercadosdia.com.ar/aceite-de-oliva-morixe-extra-virgen-250-ml-289004/p
https://diaonline.supermercadosdia.com.ar/aceite-de-oliva-morixe-virgen-500-ml-276048/p
https://diaonline.supermercadosdia.com.ar/aceite-en-aerosol-dia-120-gr-53460/p
https://diaonline.supermercadosdia.com.ar/aceite-girasol-alsamar-15-lts-272259/p
https://diaonline.supermercadosdia.com.ar/aceite-oliva-nucete-extra-virgen-envase-de-vidrio-500-ml-179862/p
https://diaonline.supermercadosdia.com.ar/aceite-para-hornillos-gardenia-organic-spa-12-ml-269348/p
https://diaonline.supermercadosdia.com.ar/aceite-para-hornillos-jazmin---bambu-organic-spa-12-ml-269347/p
https://diaonline.supermercadosdia.com.ar/aceite-para-hornillos-vainilla-organic-spa-12-ml-269350/p
https://diaonline.supermercadosdia.com.ar/aceite-para-hornillos-verbena-y-fresias-organic-spa-12-ml-269349/p
https://diaonline.supermercadosdia.com.ar/aceitunas-negras-nucete-en-salmuera-190-gr-286869/p
https://diaonline.supermercadosdia.com.ar/aceitunas-verdes-castell-180-gr-295511/p
https://diaonline.supermercadosdia.com.ar/aceitunas-verdes-rellenas-doy-pack-castell-180-gr-56152/p
https://diaonline.supermercadosdia.com.ar/aceituna-verde-castell-descarozada-doypack-70-gr-106457/p
https://diaonline.supermercadosdia.com.ar/aceituna-verde-castell-rellena-doypack-90-gr-27243/p
https://diaonline.supermercadosdia.com.ar/aceituna-verde-descarozada-castell-150-gr-295512/p
https://diaonline.supermercadosdia.com.ar/aceituna-verde-descarozada-castell-80-gr-295513/p
https://diaonline.supermercadosdia.com.ar/aceituna-verde-en-rodajas-castell-150-gr-171781/p
https://diaonline.supermercadosdia.com.ar/aceituna-verdes-en-rodajas-doy-pack-castell-80-gr-295509/p
https://diaonline.supermercadosdia.com.ar/acelga-congelada-granja-del-sol-500-gr-20325/p
https://diaonline.supermercadosdia.com.ar/acondicionadores-echo-doypack-450-cc-271367/p
https://diaonline.supermercadosdia.com.ar/actimel-kids-banana-y-frutilla-100-gr-20811/p
https://diaonline.supermercadosdia.com.ar/aderezo-a-base-de-mostaza-dia-220-gr-125442/p
https://diaonline.supermercadosdia.com.ar/aderezo-balsamico-sueno-verde-200-gr-292384/p
https://diaonline.supermercadosdia.com.ar/aderezo-notmayo-picante-notco-325-gr-272859/p
https://diaonline.supermercadosdia.com.ar/aderezo-pesto-de-albahaca-sueno-verde-170-gr-278591/p
https://diaonline.supermercadosdia.com.ar/aderezo-sueno-verde-coleslaw-200-ml-267282/p
https://diaonline.supermercadosdia.com.ar/adobo-para-pizza-la-parmesana-20-gr-298851/p
https://diaonline.supermercadosdia.com.ar/aerosol-desinfectante-original-lysoform-380-ml-122974/p
https://diaonline.supermercadosdia.com.ar/agua-con-gas-villavicencio-500-ml-298971/p
https://diaonline.supermercadosdia.com.ar/agua-de-mesa-kin-sin-gas-225-lts-238290/p
https://diaonline.supermercadosdia.com.ar/agua-de-mesa-kin-sin-gas-500-ml-118148/p
https://diaonline.supermercadosdia.com.ar/agua-fina-saborizada-h2oh-citrus-225-lts-127615/p
https://diaonline.supermercadosdia.com.ar/agua-mineralizada-sin-tacc-dia-225-lt-295396/p
https://diaonline.supermercadosdia.com.ar/agua-mineral-sierra-de-los-padres-15-lts-215485/p
https://diaonline.supermercadosdia.com.ar/agua-mineral-sin-gas-dia-2-lts-48123/p

16
db-datos/supermercado.ts Normal file
View file

@ -0,0 +1,16 @@
export enum Supermercado {
Dia = "Dia",
Carrefour = "Carrefour",
Coto = "Coto",
}
export const hosts: { [host: string]: Supermercado } = {
"diaonline.supermercadosdia.com.ar": Supermercado.Dia,
"www.carrefour.com.ar": Supermercado.Carrefour,
"www.cotodigital3.com.ar": Supermercado.Coto,
};
export const colorBySupermercado: { [supermercado in Supermercado]: string } = {
[Supermercado.Dia]: "#d52b1e",
[Supermercado.Carrefour]: "#19549d",
[Supermercado.Coto]: "#e20025",
};

225
scraper/auto.ts Normal file
View file

@ -0,0 +1,225 @@
import "dotenv/config";
import { mkdtemp, access } from "node:fs/promises";
import { tmpdir } from "node:os";
import { join, resolve } from "node:path";
import { spawn } from "node:child_process";
import { Supermercado } from "db-datos/supermercado.js";
import PQueue from "p-queue";
import { format, formatDuration, intervalToDuration } from "date-fns";
import { parseWarc } from "./scrap.js";
import { S3Client } from "@aws-sdk/client-s3";
import { Upload } from "@aws-sdk/lib-storage";
import { BunFile } from "bun";
if (
!process.env.S3_ACCESS_KEY_ID ||
!process.env.S3_SECRET_ACCESS_KEY ||
!process.env.S3_BUCKET_NAME
)
throw new Error("missing s3 creds");
if (!process.env.TELEGRAM_BOT_TOKEN)
console.warn("no hay TELEGRAM_BOT_TOKEN, no voy a loggear por allá");
if (!process.env.TELEGRAM_BOT_CHAT_ID)
console.warn("no hay TELEGRAM_BOT_CHAT_ID, no voy a loggear por allá");
const { S3_BUCKET_NAME, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY } = process.env;
// https://www.backblaze.com/docs/cloud-storage-use-the-aws-sdk-for-javascript-v3-with-backblaze-b2
const s3 = new S3Client({
endpoint: "https://s3.us-west-004.backblazeb2.com",
region: "us-west-004",
credentials: {
accessKeyId: S3_ACCESS_KEY_ID,
secretAccessKey: S3_SECRET_ACCESS_KEY,
},
});
const supermercados: Supermercado[] = [
Supermercado.Carrefour,
Supermercado.Coto,
Supermercado.Dia,
];
// hacemos una cola para la compresión para no sobrecargar la CPU
const compressionQueue = new PQueue({ concurrency: 1 });
// hacemos una cola para el scrapeo para no tener varios writers a la BD y no sobrecargar la CPU
const scrapQueue = new PQueue({ concurrency: 1 });
supermercados.forEach(downloadList);
// await recompress("sqlite.db.gz", "sqlite.db.zst");
async function downloadList(supermercado: Supermercado) {
const listPath = resolve(
join(process.env.LISTS_DIR ?? "../data", `${supermercado}.txt`)
);
const date = new Date();
const ctxPath = await mkdtemp(join(tmpdir(), "preciazo-scraper-wget-"));
const zstdWarcName = `${supermercado}-${format(
date,
"yyyy-MM-dd-HH:mm"
)}.warc.zst`;
const zstdWarcPath = join(ctxPath, zstdWarcName);
const subproc = Bun.spawn({
cmd: [
"wget",
"--no-verbose",
"--tries=3",
"--delete-after",
"--input-file",
listPath,
`--warc-file=temp`,
],
stderr: "ignore",
stdout: "ignore",
cwd: ctxPath,
});
const t0 = performance.now();
await subproc.exited;
inform(`wget para ${zstdWarcName} tardó ${formatMs(performance.now() - t0)}`);
const gzippedWarcPath = join(ctxPath, "temp.warc.gz");
if (!(await exists(gzippedWarcPath))) {
const err = report(`no encontré el ${gzippedWarcPath}`);
throw err;
}
await compressionQueue.add(() => recompress(gzippedWarcPath, zstdWarcPath));
if (!(await exists(zstdWarcPath))) {
const err = report(`no encontré el ${zstdWarcPath}`);
throw err;
}
scrapAndInform({ zstdWarcPath, zstdWarcName });
try {
await uploadToBucket({
fileName: zstdWarcName,
file: Bun.file(zstdWarcPath),
});
} catch (error) {
inform(`Falló subir ${zstdWarcName} a S3; ${error}`);
console.error(error);
}
}
async function scrapAndInform({
zstdWarcPath,
zstdWarcName,
}: {
zstdWarcPath: string;
zstdWarcName: string;
}) {
const res = await scrapQueue.add(async () => {
const t0 = performance.now();
const progress = await parseWarc(zstdWarcPath);
return { took: performance.now() - t0, progress };
});
if (res) {
const { took, progress } = res;
inform(
`Procesado ${zstdWarcName} (${progress.done} ok, ${
progress.errors.length
} errores) (tardó ${formatMs(took)})`
);
} else {
inform(`Algo falló en ${zstdWarcName}`);
}
}
/**
* toma un archivo gzippeado y lo recomprime con zstd.
* borra el archivo original.
*/
function recompress(inputPath: string, outputPath: string) {
// XXX: por alguna razón no funciona en Bun 1.0.20
// const decompressor = Bun.spawn({
// cmd: ["gzip", "-dc", inputPath],
// stderr: "inherit",
// });
// const compressor = Bun.spawn({
// cmd: ["zstd", "-T0", "-15", "--long", "-o", outputPath],
// stdin: decompressor.stdout,
// // stderr: "inherit",
// });
// const errorCode = await compressor.exited;
// if (errorCode !== 0) {
// const err = report(`zstd threw error code ${errorCode}`);
// throw err;
// }
return new Promise((resolve, reject) => {
const decompressor = spawn("gzip", ["-dc", inputPath], {
stdio: [null, "pipe", null],
});
const compressor = spawn(
"zstd",
["-T0", "-15", "--long", "-o", outputPath],
{
stdio: ["pipe", null, null],
}
);
// @ts-expect-error a los types de bun no le gusta????
decompressor.stdout.pipe(compressor.stdin);
compressor.on("close", (code) => {
if (code !== 0) {
const err = report(`zstd threw error code ${code}`);
reject(err);
}
resolve(void 0);
});
});
}
async function uploadToBucket({
fileName,
file,
}: {
fileName: string;
file: BunFile;
}) {
const parallelUploads3 = new Upload({
client: s3,
params: {
Bucket: S3_BUCKET_NAME,
Key: fileName,
Body: file,
},
});
await parallelUploads3.done();
}
function inform(msg: string) {
sendTelegramMsg(msg);
console.info(msg);
}
function report(msg: string) {
inform(msg);
const error = new Error(msg);
return error;
}
async function exists(path: string) {
try {
access(path);
return true;
} catch {
return false;
}
}
async function sendTelegramMsg(text: string) {
if (!process.env.TELEGRAM_BOT_TOKEN || !process.env.TELEGRAM_BOT_CHAT_ID)
return;
const url = new URL(
`https://api.telegram.org/bot${process.env.TELEGRAM_BOT_TOKEN}/sendMessage`
);
url.searchParams.set("chat_id", process.env.TELEGRAM_BOT_CHAT_ID);
url.searchParams.set("text", text);
await fetch(url);
}
function formatMs(ms: number) {
return formatDuration(intervalToDuration({ start: 0, end: Math.round(ms) }));
}

View file

@ -11,11 +11,15 @@
"author": "",
"license": "ISC",
"dependencies": {
"@aws-sdk/client-s3": "^3.478.0",
"@aws-sdk/lib-storage": "^3.478.0",
"date-fns": "^3.0.6",
"db-datos": "workspace:^",
"dotenv": "^16.3.1",
"drizzle-orm": "^0.29.1",
"linkedom": "^0.16.5",
"nanoid": "^5.0.4",
"p-map": "^7.0.0",
"p-queue": "^8.0.1",
"undici": "^6.2.0",
"warcio": "^2.2.1",
"zod": "^3.22.4"

View file

@ -8,7 +8,6 @@ import { getCarrefourProduct } from "./parsers/carrefour.js";
import { getDiaProduct } from "./parsers/dia.js";
import { getCotoProduct } from "./parsers/coto.js";
import { join } from "path";
import pMap from "p-map";
import { and, eq, sql } from "drizzle-orm";
const DEBUG = false;
@ -33,10 +32,11 @@ const getPrevPrecio = db
.limit(1)
.prepare();
let progress = { done: 0, errors: 0 };
await pMap(process.argv.slice(2), (path) => parseWarc(path), {
concurrency: 40,
});
if (process.argv[1].endsWith("/scrap.ts")) {
for (const path of process.argv.slice(2)) {
await parseWarc(path);
}
}
export type Precio = typeof schema.precios.$inferInsert;
export type Precioish = Omit<
@ -44,12 +44,12 @@ export type Precioish = Omit<
"fetchedAt" | "url" | "id" | "warcRecordId" | "parserVersion"
>;
async function storePrecioPoint(point: Precio) {
await db.insert(schema.precios).values(point);
}
async function parseWarc(path: string) {
export async function parseWarc(path: string) {
// const warc = createReadStream(path);
let progress: {
done: number;
errors: { error: any; warcRecordId: string; path: string }[];
} = { done: 0, errors: [] };
const warc = Bun.spawn(["zstd", "-do", "/dev/stdout", path], {
stderr: "ignore",
@ -89,13 +89,16 @@ async function parseWarc(path: string) {
parserVersion: PARSER_VERSION,
};
if (ish) await storePrecioPoint(p);
await db.insert(schema.precios).values(p);
// console.log(product);
progress.done++;
} catch (error) {
console.error(error);
progress.errors++;
console.error({ path, warcRecordId, error });
progress.errors.push({
path,
warcRecordId,
error,
});
if (DEBUG) {
const urlHash = createHash("md5")
@ -105,9 +108,9 @@ async function parseWarc(path: string) {
await writeFile(output, html);
console.error(`wrote html to ${output}`);
}
} finally {
console.debug(`done: ${progress.done}; errored: ${progress.errors}`);
}
}
}
return progress;
}

View file

@ -2,26 +2,10 @@
import type { Precio } from "db-datos/schema";
// import dayjs from "dayjs";
import ChartJs from "./ChartJs.svelte";
import { hosts, colorBySupermercado } from "db-datos/supermercado";
export let precios: Precio[];
enum Supermercado {
Dia = "Dia",
Carrefour = "Carrefour",
Coto = "Coto",
}
const hosts: { [host: string]: Supermercado } = {
"diaonline.supermercadosdia.com.ar": Supermercado.Dia,
"www.carrefour.com.ar": Supermercado.Carrefour,
"www.cotodigital3.com.ar": Supermercado.Coto,
};
const colorBySupermercado: { [supermercado in Supermercado]: string } = {
[Supermercado.Dia]: "#d52b1e",
[Supermercado.Carrefour]: "#19549d",
[Supermercado.Coto]: "#e20025",
};
$: datasets = precios
.map((p) => new URL(p.url!).hostname)
.filter(onlyUnique)