USANDO REQUEST
Analizar lo que es la librería Request.
A diferencia de Web Browser que solamente sirve para abrir páginas, en este ya se puede interactuar con la web y empezar a descargar documentos y poderlos analizar en la máquina.
Para ello ya se sabe cómo abrir Jupyter.
Leer un poquito lo que es la librería request.
La librería es el estándar para realizar solicitudes http en python.
Es con esta librería que se puede resumir las complejas actividades que se utilizara al leer páginas web con comandos simples para que como desarrolladores, se pueda enfocar solamente en lo que se quiere realizar y no estar batallando leyendo a datos desde internet.
Entonces, para ello va a utilizarla.
Se importa simplemente escribiendo "import request".
Esta librería, como ya instalo anaconda, todo eso ya viene instalado de default.
Si estuvieron usando Python básico tendrían que instalarlo de alguna otra manera, ok.
Entonces, va a descargar un archivo de internet.
Va a copiarlo y verlo en otra pestaña de el navegador a ver qué es.
Rápidamente se puede dara cuenta que en realidad es la obra de William Shakespeare, Romeo y Julieta.
Desde Python se puede acceder a Internet, descargar esa obra y poder manipularla.
Lo va hacer simplemente usando "request.get", y la página que interesa.
Eso lo va a abordar en la variable "res".
Si la imprime ¿qué contiene? Response [200].
Ese response es el código de error que nos ofrece el navegador.
200 nos está diciendo que es un código correcto, es un ok.
Valores de 400 son valores de error.
Entonces, no se tiene que memorizarlo, simplemente se puede utilizar los que ya están guardados en Python.
Entonces le se puede decir "res, dame tu estado de código, o el código de estado".
Si esto es igual a un ok pues "imprímelo" y va a dar "true".
Entonces, la descarga del archivo fue correcta.
A partir de eso ya se puede hacer predicciones como por ejemplo, tener la longitud del archivo.
y aquí dice que es de 178,000 palabras, o sea es un archivo grande.
Grande en el contexto de un texto, pero no es grande en el contexto de mega bits, o el tamaño del físico del archivo.
También se puede imprimir la obra.
Si le se pone print(res.text) Da lo mismo que se tiene en la otra pestaña.
Ahora, como data scientist pues tal vez no nos sirva mucho la obra de Romeo y Julieta.
Entonces, nuestra aplicabilidad va más allá de ello.
Por ello va a utilizar un ejemplo de la bolsa de valores.
La bolsa de valores se la puede analizar a través de yahoo finance.
Yahoo finance tiene una plataforma en la que te está dando constantemente valores actualizados de cómo abrió la bolsa, cómo cerró y cómo están las acciones en la bolsa.
Por ejemplo cemex.
Esta tabla, si la abrimos, que abre en excel, va a da los valores del 7 de julio de 2018 hasta el 5 de julio de 2019.
Entonces nos está dando aproximadamente un año, si se quiere más datos.
Bueno, para ello se puede descargar los datos directamente desde Python y especificar el rango de fechas que se requiere.
Esta solicitud que yahoo espera para poder procesar los datos, y está pidiendo tres cosas: uno, el periodo 1, o sea, el inicio, el periodos 2 es el final, el intervalo, que es un dato excel que no esta considerando por el momento, y aparte es éste crumb, que es una variable interna que usa yahoo.
Ahorita lo van a descubrir cómo procesarla.
Esta es la dirección que interesa.
Entonces, van a usarla desde desde Python.
Ya se sabe que se tiene tres incógnitas.
Una, la fecha inicial, y otra es la fecha final.
Entonces, hay que procesarlas de alguna manera.
Python ayuda dando la librería "datatime".
Ésta va a ayudar a todo lo relacionado con fechas y la va a estar usando constantemente cuando requieran algo que utilice alguna fecha de algún tipo.
En la nomenclatura clásica es utilizarlo como "dt".
Si Se utiliza dt con la función "utcnow" va a dar la fecha actual.
Entonces, ahí está, no hay ningún problema.
Ahora, pero yahoo en realidad no nos está pidiendo una fecha de esa forma, no nos está pidiendo año, mes, día.
Lo que está pidiendo es el time stamp.
Este es un valor numérico que mide el número de segundos a partir de una fecha determinada.
Entonces con esto no se necesita calcularlo directamente sino Python lo calcula por nosotros.
Entonces se tiene lista la fecha (para dar la fecha actual).
Tal vez se necesita un periodo preestablecido o tal vez hace un año o hace dos años.
Entonces, para ello van a definir fechas concretas.
Va a decirle que la fecha de inicio va a ser el 1 de enero del 2017 y la fecha final el 1 de enero de 2019.
Para ello lo va a procesar con la librería de dt y va a usar una función especial que se llama striptime, que lo que va a hacer es convertir un string a un formato daytime, y eso al final lo van a convertir a un timestamp, que son los segundos desde 1970 y algo, no tengo el dato.
Entonces lo procesa y ahora eso lo se quiere convertir a un valor numérico porque lo da como string.
Eso lo hace a través de la función int.
Va a imprimirla para ver qué nos está dando.
Start da este valor y va a usar finish.
Da un valor más grande, es lo único que se tiene que saber.
Start van a ser antes y finish van a ser después.
Ahora sí, ya esta listos para empezar a tratar de recibir los datos de yahoo finance.
Por ahí van a usar la librería request y en esta página en especial van a usar una función llamada "session".
Con la sesión le va a decir a yahoo "hey, soy yo, guarda mis datos por el momento" y a partir de ahí van a ir a descargar los datos.
Hay otro valor que quedaba pendiente que es la acción que va a analizar, que era cemex.
cemexcpo.
Entonces, van a guardarla en una variable.
Ya se tiene como stock.
Y ahora, la url primero nos dice que se tiene que visitar esta página, recargar, esta página para después darle clic a descargar los datos.
Entonces, se tiene que editar esa página primero y para eso va a ser útil la sesión.
Si nota que se le quite esta última parte que es el signo de pregunta, no importa, como quiera la carga.
Entonces se utiliza como url.
Si recuerdan cuando se pone corchetes abiertos y cerrados ahí inmediatamente se puede reemplazarlo ese valor, esos corchetes, con lo que tengamos afuera, o sea, en este caso el stock, por la función format.
Entonces, si lo hace de esta forma y le da visitar "s.get(url)", entonces esta diciendo a request "visíta la página financeyahoo.com con el stock cemex y trae esos datos, y esos datos dicen "200", ya visitó la página correctamente.
Ahora van a guardarlo en una variable.
Va a utilizar la variable de "res", la utiliza para descargar "Romeo y Julieta", pero ya no la se necesita.
Va a sobrescribir.
Entonces, en res ya se tiene la respuesta de visitar la página de yahoofinance.
Ahora se tiene que darle descargar los datos pero para ello recuerden que se tiene una variable pendiente, era el crumb.
El crumb es un valor que se va a generar cada que se visita la página.
Entonces, hay que retomar ese valor de la sesión.
Si se imprime esta respuesta, .text, en realidad trae un montón de datos de información que al principio no es muy comprensible para el humano, es código para el navegador, entonces si con el navegador le damos ctrl+F abre la función de buscar, y va a buscar la variable "CrumbStore", y da un valor.
Este es el que esta buscando para pasárselo a la página web.
Entonces, ¿cómo se puede retirar este valor de todo este montón de cosas que no se sabe qué significan? Bueno, para ello van a usar una función "RegEx", en específico se llama "re".
Con "re" va a encontrar todas las coincidencias de un conjunto de caracteres específicos.
Como esta buscando y más en específico el valor que está dentro de comillas, lo que van a hacer es: va a decirle "encuentra todos los fragmentos de código que coincidan o de texto que coincidan con esta forma" fija el valor específico que esta buscando, lo tiene entre paréntesis con un punto, un signo de más y una pregunta.
Lo que eso quiere decir es: vas a encontrar los puntos, que son cualquier carácter alfanumérico, un más, que quiere decir al menos un carácter alfanumérico y con la menor cantidad de caracteres posibles.
De esta forma cuando lo se ejecuta va a dar una lista con todas las veces que encontró ese valor que esta buscando, y como se quiere la primera vez que lo encuentre, o sea, el cero, pues simplemente lo accedemos con ese valor.
Este valor es igual al que esta buscando en el conjunto de texto.
Ahora van a hacer la consulta y la página con todas las variables ya localizadas.
Entonces, recuerdes que la ruta que esta buscando tiene el primer periodo, el segundo periodo y el crumb, que es la variable especial que está pidiendo Yahoo.
Se tiene esa consulta donde el periodo 1, el periodo 2 y el crumb se lo reemplaza, ¿por qué? por el inicio, el final y el crumb.
Si notan, donde deberían ir los periodos está ":d".
Simplemente le esta diciendo que ahí va un valor numérico.
Entonces la guardamos como "api", y la "api" la va a obtener con la sesión, y la va a guardar como resultado 2.
Entonces lo van a ejecutar y se imprime, y da la información que esta solicitando.
Ahora, pero así es un poco difícil de leer y si se dan cuenta hay unos /n.
/n en archivos de texto quiere decir salto de línea, entonces, tiene una forma muy extraña para poderlo leer.
Entonces aquí es donde viene Pandas al rescate y va a ayudar para poder manipular esta información y leerla de una manera muy natural.
Entonces van a importar Pandas y ahora sí.
Una vez que cargó van a utilizar la función read_csv.
read_csv, si recuerda, va a tomar los archivos separados por comas y los van a manipular en un data frame.
Ahora, pero aquí hay una curiosidad.
El archivo csv no lo se tiene guardado en el archivo.
Entonces, ¿cómo le hace para pasarlo de memoria a un Pandas? Bueno, para ello se puede utilizar esta función "pd.compat.StringIO".
Le esta diciendo que el input y output (IO) va a ser una variable string, ¿qué variable string? pues ya la se tiene, es res2.text.
Entonces, se ejecuta y se imprime, y listo, se tiene el conjunto de datos ya organizado a través de un data frame que tiene filas y columnas.
El request es una librería muy útil a la hora de estar leyendo datos de Internet donde ya vienen más o menos preparados y se puede jalar y tabular de forma que ya se puede aplicar todas las funcionalidades que ofrece Pandas.
En el siguiente video van a utilizar beautiful soup el cual nos van a ayudar cuando no se puede descargar el archivo como nos lo permite yahoo.
Si yahoo no permitiera esta opción tendríamos que leerla directamente de la página web.
Entonces para ello nos van a servir beautiful soup.
Los espero en el siguiente video.
No hay comentarios:
Publicar un comentario