HomeVideos

Hice un Tracker de Precios de Amazon con Decodo

Now Playing

Hice un Tracker de Precios de Amazon con Decodo

Transcript

499 segments

0:00

Hoy te enseño cómo montar un rastreador

0:01

de precios de Amazon con Typesc, pero no

0:04

una demo de sacar el precio una vez y ya

0:06

está. Vamos a construir un scrapping en

0:08

condiciones que consulte el título, el

0:10

precio, que guardemos un histórico en

0:11

una base de datos, que lo automaticemos

0:13

con GHUp actions y que no nos bloqueen

0:15

nunca utilizando de codo. Así que sí,

0:17

vamos a construir como un tracker de

0:19

precios porque claro, hacer scrapping

0:21

parece muy fácil. Haces un fetch y ya

0:23

está, recuperas los datos y venga a

0:26

extraerlos. Y esto funcionar funciona.

0:28

Ya ves que como tienes el HTML te pones

0:30

aquí a buscar dónde tienes el precio y

0:32

ya está. Pero cuando estás con webs más

0:34

serias empiezan los problemas. Tienes

0:36

problemas de rate limit, o sea, que te

0:38

limitan la tasa de veces que puedes

0:40

hacer la petición. Te bloquean la IP, el

0:42

HTML cambia contenido dinámico, los

0:45

capchas y en ese momento precioso en el

0:47

que crees que todo funciona, pero que en

0:49

realidad te está devolviendo basura.

0:50

Pero bueno, que no te preocupes porque

0:52

vamos a empezar desde el principio. Que

0:53

sepas que todo el código de lo que vas a

0:55

ver en este vídeo lo tienes disponible

0:57

en este repositorio que en la

0:58

descripción te dejo el enlace para que

1:00

no te lo pierdas. Y de hecho vamos a ver

1:02

cómo hacer un scrapping manual

1:04

[carraspeo] rápidamente. Este archivo lo

1:05

tienes en el repositorio, pero te lo voy

1:07

a explicar paso a paso para que lo

1:09

entiendas porque es básico. Tengo una

1:11

función principal en este archivo

1:13

manualscrapper.ts,

1:15

que lo que [resoplido] hace es iterar

1:17

sobre los assins. ¿Qué es esto del asin?

1:19

No te asustes. Estos son los

1:21

identificadores únicos en la store de

1:23

Amazon de los productos. ¿Ves? Los he

1:25

puesto aquí como variables de entorno

1:27

[resoplido] en la tienda de Amazon en

1:29

España. Y los assins los sacas de la

1:32

URL. Aquí, fíjate, este sería el asin de

1:36

este producto, pero seguramente puedes

1:38

ir a otro producto y encontrarte esta

1:40

URL supergre y luego, ¿dónde está la

1:43

SIM? Está justo después. Este es el

1:45

identificador que necesitas. Y entonces,

1:47

¿qué pasa con todo esto? Porque esto no

1:49

sirve absolutamente para nada. De hecho,

1:51

esto puedes poner aquí, mira, puedes

1:53

poner lo que quieras, puedes poner aquí

1:56

lo que quieras. Le das al enter y

2:00

funciona perfectamente. ¿Lo sabías?

2:02

Bueno, pues ya sabes, le puedes hacer

2:03

una broma a tu amigo, pones aquí

2:04

PlayStation 5, se pasa la URL y se

2:07

asusta. Pero bueno, el tema es que lo

2:09

importante de la URL es esto. Sacas ese

2:11

identificador, te lo traes para aquí.

2:13

Ahora iteramos sobre cada uno de estos

2:15

identificadores y llamamos a la función

2:17

scrape. Esto, ¿qué es lo que hace? Pues

2:19

vamos a hacer una petición sobre la URL

2:22

correcta que hemos construido aquí con

2:24

el dominio si españa, si es Estados

2:26

Unidos o lo que sea y pasándole el

2:28

identificador de producto. hacemos un

2:30

fetch, que al hacer un fetch es como

2:32

hacer esto, ver código fuente de la

2:34

página, recuperar todo el contenido y

2:37

como es simplemente el HTML lo que

2:40

queremos, por eso aquí lo que estamos

2:42

haciendo es un response punto text, por

2:45

eso no estamos convirtiendo a Jason ni

2:46

nada, sino que es un punto text. Cosas

2:48

importantes que de headers le estamos

2:50

pasando un user agent como si fuésemos

2:52

un usuario. Esto cuando hacemos

2:54

scrapping manual pues es normal para que

2:56

no nos bloqueen. Luego que si hay algún

2:57

error hacemos un throughout new error y

3:00

aquí lo que hacemos es un console lo log

3:02

del HTML para ver qué es lo que nos ha

3:04

devuelto. De hecho, si vamos a la

3:05

terminal y yo ejecuto npx TSX, esto es

3:09

porque estoy utilizando Typescript,

3:10

¿vale? Para no tener que compilarlo y

3:12

ejecutarlo al vuelo. Ejecutamos este

3:15

scrapper, ¿vale? Y fíjate que en cuanto

3:18

termine, pues aquí tengo todo el HTML.

3:20

Qué graciosos la gente de Amazon

3:22

metiendo estas cosas. En ese HTML es que

3:24

tenemos que extraer toda la información.

3:26

Y para eso, pues, ¿qué hacemos? Pues

3:28

utilizar un Regex. Lo que hacemos aquí,

3:30

fíjate, para encontrar el título del

3:32

producto, pues buscamos el elemento del

3:34

productemos

3:36

lo de dentro. Y finalmente, una vez que

3:38

hemos hecho todas las regs, lo que

3:40

hacemos es devolver cada uno de los

3:42

campos. Y bueno, así te puedes defender

3:44

mientras no cambie el HTML porque si no

3:46

lo tienes que cambiar todo y ya está. Lo

3:48

peor en realidad es que ya le he dado

3:49

unas cuantas veces, pero voy a estar

3:51

dándole hasta que me pase esto, ¿vale? Y

3:54

es que de vez en cuando Amazon puede

3:56

detectar que estás haciendo demasiadas

3:58

peticiones y te va a dar un 421, te va a

4:01

hacer un rate limit, te va a limitar el

4:04

número de peticiones que vas a poder

4:05

hacer. Es verdad que si tú de repente le

4:07

vuelves a dar, a lo mejor ha pasado

4:09

suficiente tiempo, pues puede volver a

4:11

funcionar sin ningún problema, ¿vale?

4:13

Pero si tú vuelves a ejecutar todo el

4:15

rato lo mismo, cada vez el rey limito

4:19

y es más fácil que te vuelva a salir.

4:21

Vale, aquí vamos a ver. Ahora mismo pues

4:24

habrá pasado un minuto y me estará

4:26

permitiendo hacerlo. Ahora me va a dejar

4:28

fatal. Pues voy a decir, "No, pues ya

4:29

no." Ah, no, ahí está. Vale, otra vez.

4:30

Fíjate que me ha vuelto a salir este

4:32

error. Obviamente si tú haces un

4:34

scrapping, pues muy corto, no pasa nada.

4:36

Pero para arreglar esto podríamos

4:37

utilizar los servicios de Decodo. Decodo

4:40

es un servicio que te permite no tener

4:42

que enfocarte tanto en la parte de la

4:44

infraestructura, sino más en el dato.

4:46

¿Por qué? Porque tiene servicios tanto

4:48

de proxy como directamente para hacer

4:51

scrapping. Como a mí lo que me interesa

4:52

es construir un tracker y no pelearme

4:54

con esto, pues me viene genial.

4:56

Podríamos utilizar los proxis de decodo,

4:58

que está muy bien porque te permite

5:00

acceder a más de 115 millones de IPs

5:02

diferentes en más de 195 localizaciones.

5:06

O sea, que sería imposible que Amazon me

5:08

pudiera bloquear porque estaría

5:09

cambiando todo el rato la IP. ¿Y cómo se

5:12

utilizaría? Pues así, aquí tienes este

5:14

código de No lo puedes ver.

5:16

utilizaríamos el https proxy agent,

5:19

donde accedemos con la URL de Decodo.

5:22

Tendríamos que acceder también con

5:23

nuestro nombre de usuario y password,

5:26

pero esto lo que haría es que cuando

5:27

hagamos el fetch, esto va a tener este

5:31

agente que es el que se va a encargar de

5:33

tener una IP diferente y hacer la

5:35

petición por nosotros. Pero por encima

5:37

de esto también tienen los scrappers que

5:39

ya están utilizando toda esta plataforma

5:41

y tú no te tienes que pelear y ya están

5:43

preparados para sacar información de

5:45

cualquier web y con algunas plantillas

5:47

específicas para sacar, por ejemplo, de

5:49

Amazon. Que sepas que en este vídeo nos

5:51

está apoyando Decodo y por eso tengo en

5:53

la descripción un enlace con una prueba

5:55

gratuita para el Webcrapping API y que

5:58

también te da un 10% de descuento por si

6:00

te ha gustado el servicio y quieres

6:02

seguir utilizándolo en tus próximos

6:04

proyectos. En este caso le vamos a dar a

6:06

start free y ves, yo ya tengo aquí el

6:08

webscrapping API. Podemos buscar aquí,

6:11

vamos a ir al API Playground. Fíjate que

6:14

aquí tenemos el web scrapping más

6:16

general, pero podemos ponerlo en Amazon.

6:19

Amazon Product. Aquí le vamos a poner

6:21

pues justamente esta ID de aquí. Podemos

6:24

desactivar el JavaScript rendering, que

6:25

es interesante, pero en este caso lo que

6:27

va a hacer es que tarde más si

6:28

necesariamente. Le decimos que el output

6:30

es JSON. Le indicamos que la tienda es

6:34

la española. Importante. Podemos aquí

6:37

cambiar más cosas, pero bueno, no es

6:39

importante. Y ahora simplemente vamos a

6:41

enviar la petición. Voy a cambiarlo en

6:44

Note para que veamos aquí cómo es la

6:46

API. Le voy a enviar la petición y en 3

6:48

segundos tenemos toda la información.

6:50

Fíjate que tenemos aquí, pues yo que sé,

6:52

los bullet points, la categoría, la caja

6:55

de compra. Aquí tendríamos toda la

6:57

información. O sea, es que tenemos mucha

7:00

más información de la que parecía antes,

7:02

¿eh? Porque es que nos ha convertido

7:03

toda la página web a un Jason de, por

7:06

ejemplo, la descripción tenemos, o sea,

7:08

no hemos tenido que pelearnos con

7:09

absolutamente nada. Y aquí tenemos esta

7:10

información, todas las imágenes, también

7:12

tenemos el precio, tenemos también por

7:15

aquí todos los detalles, el nombre del

7:17

producto, bueno, una pasada, tenemos

7:19

aquí un montón de información, rating,

7:21

tenemos es que hasta el breakdown, las

7:23

reviews, nos ha sacado un montón de

7:24

información. Esto obviamente se puede

7:27

personalizar para que nos devuelva más o

7:29

menos información, pero bueno, cuanta

7:30

más información tengamos pues mucho

7:32

mejor. Ahora, volviendo a la petición,

7:34

fíjate aquí que nos podemos copiar todo

7:38

esto. Aquí está mi token. No te lo

7:39

copies, utiliza el tuyo, que te he

7:41

dejado el enlace para que consigas el

7:43

tuyo. Pero bueno, nos podemos copiar

7:44

todo este código y vamos a volver a mi

7:47

proyecto. Antes hemos visto el manual

7:49

scrapper para hacerlo manualmente

7:50

haciendo un fetch a saco. Ahora voy a ir

7:52

al archivo scrapper. TS. Y fíjate que

7:55

aquí tengo el método Scrappe Product.

7:57

Vale, pues lo que vamos a hacer aquí es

7:59

pegar lo que había copiado. Aquí, ojo

8:02

que te sale el token, no me lo robes.

8:05

Entonces, para el token, yo lo voy a

8:07

sacar de la variable de entorno. Tengo

8:08

esta función get decodo out, que es la

8:11

que voy a utilizar aquí, y directamente

8:15

voy a ir a las variables de entorno y

8:17

voy a rellenar este decodo out token.

8:19

Para eso volvemos al dashboard de decodo

8:22

y nos tenemos que copiar este basic

8:24

authentication token. Le damos aquí a

8:27

copiar. Volvemos por aquí. Nos vemos a

8:30

las variables de entorno. Ahora mírame a

8:31

los ojos. Mírame a los ojos. No mires

8:34

esto. No mires. Ya está. Ahora ya

8:36

podemos volver por aquí. Entonces la

8:38

respuesta, fíjate una cosita importante,

8:40

la query le tenemos que pasar el así, el

8:43

assín que nos lleva por parámetro. Y

8:46

esta respuesta vamos a decirle que si no

8:48

está bien la respuesta vamos a enviar el

8:51

error, ¿vale? Vamos a quitar esta línea

8:53

aquí del catch porque no tiene sentido.

8:55

Ya estamos comprobando aquí el error.

8:57

Luego aquí tenemos que transformar la

9:00

respuesta para recuperar los datos que

9:02

ya antes hemos visto que era un objeto

9:04

un poco complejo. Data. resols, la

9:07

primera el primer elemento de resols,

9:10

luego el contenido, luego más resols y

9:13

finalmente vamos a poder mapear todos

9:15

los datos. Aquí hago alguna

9:17

transformación para tener el precio como

9:19

si fuese un número. Lo mismo con la

9:21

puntuación. Entonces, hacemos algunas

9:23

transformaciones y con esto ya

9:26

deberíamos tener nuestro scrapper sin

9:28

tener que preocuparnos de ray limit, de

9:30

capcha ni nada. Ahora vamos a probarlo.

9:33

Voy a volver a la terminal y voy a

9:35

ejecutar este script de aquí, pnpm run

9:38

track proxy, que lo que hace es ejecutar

9:41

este scrapper de aquí y vamos a ver si

9:43

funciona correctamente. ¿Ves? Ahora

9:45

mismo está utilizando el proxy de

9:47

Decodo, utilizando todo esto y ya

9:50

tenemos aquí toda la información sin

9:52

ningún tipo de problema, el precio,

9:54

rating, reviews, el stock URL y cuando

9:57

ha hecho el scrapping. No ha tardado

10:00

nada, fíjate. Y lo bueno es que esto sí

10:02

que yo puedo estar volviendo a darle

10:04

otra vez más, que no vamos a tener

10:06

problemas de rate limitarnos

10:09

de los elementos HTML ni nada,

10:11

directamente nos está sacando la

10:13

información sin que tengamos que

10:15

nosotros tener una preocupación si

10:17

escala o no escala. Acuérdate que tengo

10:19

un enlace para que pruebes todo esto, mi

10:22

enlace exclusivo para ti. Ahora que ya

10:24

tenemos todo esto, una cosa que me

10:26

gustaría hacer es ver si podemos ver el

10:28

histórico. Para eso, yo lo que estoy

10:31

haciendo aquí en el proxy scrapper,

10:33

fíjate que ahora mismo, pues nada, está

10:35

recuperando los assins, estoy llamando

10:36

este scrapping manual, pues lo que vamos

10:39

a hacer es iniciar sesión con una base

10:41

de datos. Yo voy a utilizar Turso, no sé

10:44

si lo conocéis, pero está bastante bien.

10:45

Una base de datos que podemos poner en

10:47

la nube. Voy a iniciar sesión con GitHub

10:50

y voy a iniciar en una base de datos

10:52

donde pueda guardar toda esta

10:53

información. Ya tengo la base de datos

10:54

aquí, Amazon Tracking. Pues una vez que

10:57

estamos aquí tenemos la información para

10:59

conectarnos, el database URL, que lo

11:01

vamos a poner en la variable de entorno.

11:03

Como no te voy a enseñar la variable de

11:05

entorno, lo que sí que puedes ver en el

11:07

example, ¿vale? Fíjate que tenemos el

11:09

turso database URL y el turso out token.

11:12

Pues estas son las dos cosas que tienes

11:14

que rellenar. El token lo vas a sacar

11:16

aquí. Le das a create token y te va a

11:18

crear el token según como lo digas. Le

11:21

vamos a decir que sea de lectura y

11:22

escritura y que nunca expire. Y cuando

11:24

le damos a create token, pues tenemos

11:27

aquí la información. Esto sería la URL y

11:30

esto sería el token que no aparece

11:31

completo, pero ya me va bien que no

11:33

aparezca completo. Entonces, mientras me

11:35

miras a los ojos, voy a estar rellenando

11:38

la información con el token, que no se

11:41

me escape nada. Y ya he pasado toda la

11:43

información, así que ya lo tengo las

11:45

variables de entorno. Lo único que me

11:46

hace falta ahora sería importar aquí una

11:50

forma de iniciar la base de datos. Aquí

11:53

tengo un esquema donde tengo toda la

11:56

tabla y toda la información, los índices

11:58

que tenemos que utilizar y también

12:00

tendía aquí las queries, fíjate aquí las

12:04

queries. Tengo aquí las queries, es safe

12:06

snapshot para recuperar todos los

12:08

snapshots. Esto es básicamente para

12:10

hacer el histórico. Así que vamos a

12:12

hacer un import. Vamos a hacer el safe

12:14

snapshot y este safe snapshot vamos a

12:18

utilizarlo aquí dentro, ¿vale? Primero

12:21

aquí importante, vamos a inicializar la

12:24

base de datos. Vale, aquí me ha

12:26

importado algo, ¿no? Vale, perfecto. Y

12:29

aquí dentro, una vez que tenemos la

12:30

información, vamos a hacer el save

12:33

snapshot, ¿vale? Para guardar esta

12:35

información en nuestra base de datos.

12:38

Ahora que hemos hecho esto, vamos a

12:40

ejecutar otra vez a ver si funciona

12:42

correctamente. Está solicitando la

12:44

información adecodo. Estamos haciendo el

12:46

crowling. Ha guardado en la base de

12:48

datos este snapshot y al volver a

12:50

nuestra base de datos podemos ir a edit

12:52

data y ver pues todo el histórico y

12:55

deberíamos ver lo que ha ocurrido hoy.

12:58

Si compartimos aquí, fíjate, hoy es 30

13:01

de abril y ya tenemos los datos de hoy.

13:04

Así que perfecto. ¿Cómo podemos ver este

13:07

histórico? Pues simplemente levantando

13:10

el entorno de desarrollo. Yo lo he

13:11

dejado aquí en el puerto 4322.

13:14

Y fíjate qué gráfica más bonita. Tenemos

13:18

los dos elementos con su título, sus

13:20

precios y todo. Y podemos ver la

13:22

evolución de los precios de cada uno. Un

13:24

elemento. Tampoco que hayan cambiado

13:26

mucho. Ha bajado un pelín la memoria

13:28

RAM. Mira, ha bajado un poquito. Ha

13:30

bajado, ¿cuánto? 5 € han bajado 2 € y

13:32

luego esta sí que parece ser que ha

13:34

bajado de 416 a 413,99.

13:39

Bueno, algo es algo, algo es algo. Pero

13:41

bueno, aquí podéis ver la evolución de

13:43

precios donde cada día ha hecho pues

13:46

este scrapping, se ha quedado la

13:47

información, le ha guardado la base de

13:49

datos y ya tenemos el histórico. Y ahora

13:51

la pregunta del millón, ¿cómo podemos

13:53

automatizar esto de forma que todos los

13:55

días a la misma hora podamos recuperar

13:57

el precio y así tener el histórico, pues

14:00

vamos a crear una Gighub action y es que

14:02

tenemos aquí este flujo de trabajo, un

14:04

Wordflow, que lo que hacemos es que

14:07

funciona en schedule, lo tenemos aquí

14:10

con un Chrome Job que siempre a las 7 de

14:12

la mañana se va a ejecutar y si no

14:15

también lo podemos ejecutar manualmente.

14:17

Para esto funciona este Wordflow

14:19

Dispatch. ¿Qué estamos haciendo aquí?

14:21

Tenemos diferentes pasos. Va a funcionar

14:23

en la última versión de Ubuntu. Lo que

14:24

hacemos es los pasos, el checkout del

14:27

repo para recuperarlo. Vamos a hacer un

14:30

setup de PNPM para poder instalar las

14:32

dependencias. Setup de NOJS con la

14:34

versión 22. Instalamos las dependencias

14:37

y leemos todas las variables de entorno

14:39

que necesitamos para que funcione y

14:41

ejecutamos el script pnpm track proxy.

14:45

Ahora, una vez que tenemos esto, vámonos

14:48

a nuestro repositorio. Fíjate que yo lo

14:51

he ejecutado en realidad más veces, pero

14:52

lo he ido eliminando. Y lo que puedo

14:54

hacer aquí es darle en esta action le

14:57

podría dar aquí a rank workflow y

14:59

manualmente ejecutarlo. Lo que va a

15:02

pasar es que va a funcionar todos los

15:03

días a las 7 de la mañana, pero lo voy a

15:06

hacer ahora manualmente. Puedo entrar

15:07

para ver cómo va ejecutándose paso a

15:10

paso. Ya ha hecho el checkout del repo.

15:12

Está también haciendo el setup de no GS,

15:16

instalando las dependencias, ejecutando

15:18

el tracker. Ahora está llamando a los

15:20

servicios de decodo con el proxy sin

15:23

problemas ni capcha ni nada. Re limit,

15:26

adiós. Automáticamente está rotando las

15:29

IPS para ti. Y fíjate que ya ha

15:32

terminado. ¿Cuánto ha tardado? Pues

15:33

habrá tardado unos 10 segundos, 12

15:36

máximo, 37, va, 25, perdón. Ha tardado

15:39

25 segundos, pero lo que es el tracker

15:42

en realidad ha tardado 12 segundos. Y

15:44

para asegurarnos que esto está

15:45

funcionando, pues fíjate que aquí

15:47

podríamos resetear esto y ver que aquí,

15:51

fíjate que ahora tenemos también del 30

15:53

de abril, que es hoy, tenemos más. ¿Por

15:56

qué? Porque justamente ahora los ha

15:58

añadido. Ha añadido a la hora que

16:00

estamos ahora, pues ha añadido nuevos. Y

16:02

aquí, aunque no se va a notar mucho si

16:04

refresco, podríamos ver que tenemos aquí

16:06

más de un punto. De hecho, fíjate que no

16:08

es redondo como este. ¿Por qué? Porque

16:10

como es el mismo día, pues tenemos más

16:12

de un punto ahí que nos da el precio. No

16:14

es lo ideal normalmente tener más de un

16:17

punto en el mismo día porque no es muy

16:18

útil, pero al menos sabemos que

16:21

funcionar funciona. Así que todo esto lo

16:23

tienes totalmente de código abierto, se

16:26

llama scrapping Amazon Prices para que

16:29

veas cómo lo he hecho desde cero, para

16:31

que veas cómo funciona y que además lo

16:33

puedas hacer funcionar una vez que le

16:35

pasas tus variables de entorno. que te

16:37

acuerdes que estoy utilizando los

16:39

servicios de decodo y que te dejo en la

16:41

descripción mi enlace donde puedes

16:44

conseguir un 10% de descuento en sus

16:46

servicios por si te ha gustado y lo

16:47

quieres utilizar más adelante. Fíjate

16:49

que aquí te dice el precio y que todo lo

16:51

que he ejecutado me ha salido por 2

16:53

céntimos de dólar. Imagínate, además, no

16:55

tienes que poner tarjeta de crédito ni

16:57

nada, lo puedes probar y te va a

16:59

encantar. O sea, ya puedes probar desde

17:01

el principio sin ningún tipo de problema

17:03

y ya ves que es muy fácil y es que hay

17:05

un montón de templates diferentes para

17:07

YouTube, para TikTok, para Reddit, para

17:09

lo que tú quieras. Y lo mejor es que

17:11

tienes también el servicio de proxis,

17:14

que lo tienes aquí por si quieres hacer

17:15

una rotación automática de IPS, también

17:18

lo puedes hacer. Espero que os haya

17:20

gustado este vídeo, este pedazo de

17:22

tutorial, porque me parece que es muy

17:24

interesante que muy pocas veces se

17:25

utiliza este tipo de técnica de cómo

17:27

utilizar un proxy, cómo hacer un

17:29

scrapping mucho más avanzado. Además,

17:31

ten un histórico que seguramente muchas

17:33

veces has visto, "Oye, ¿cómo hará esto?"

17:34

pues lo hacen así, no tiene mucha más

17:36

historia y además que lo hemos hecho de

17:38

código abierto. Si te gusta este tipo de

17:40

contenido y si te ha gustado el servicio

17:41

de Decodo, que muy poca gente lo conoce

17:43

y que la verdad es que está muy genial,

17:45

pues deja tu like si te gusta este tipo

17:47

de contenido, me ayudas un montón

17:49

dejando tu like porque luego me dicen

17:51

que no programo, pero es que cuando

17:52

programo pues la gente no deja su like.

17:54

Pues deja un like, pon un comentario,

17:56

dime qué te ha parecido y si lo

17:57

reventamos, yo que sé, si llegamos a los

18:00

5,000 likes, le voy a decir a Decodo que

18:02

hacemos una segunda parte para el tema

18:04

de los proxis, a ver qué os parece.

18:06

Vale, espero que lo hayáis disfrutado

18:08

mucho. Nos vemos. Ciao.

18:13

[música]

Interactive Summary

Este video es una guía práctica sobre cómo construir un rastreador de precios de Amazon profesional utilizando TypeScript. El autor explica los desafíos comunes del web scraping, como los bloqueos de IP y el rate limiting, y cómo solucionarlos utilizando el servicio de Decodo para la rotación de proxies y la obtención de datos estructurados. Además, muestra cómo persistir los datos en una base de datos (Turso) para mantener un histórico de precios y automatizar todo el proceso mediante GitHub Actions.

Suggested questions

3 ready-made prompts