Les recomiendo Google Colab, es un Jupyter dentro del ecosistema de Google.
Introducción
Qué aprenderás sobre la ingeniería de datos
Archivos del curso y Slides
¿Qué es la Ciencia e Ingeniería de Datos?
Roles
Configuración del ambiente
Jupyter Notebooks
Profundizando en tipos de datos
Tipos de datos
Fuentes de datos
ETL
Web scraping
Introducción a las tecnologías web
Realizar solicitudes HTTP con Python
¿Cómo trabajar con un documento HTML?
Analizando un sitio web para encontrar las directivas a utilizar al hacer un web scrapping
Solicitudes a la web: Requests
Implementando nuestro web scrapper: Configuración
Implementando nuestro web scrapper: Obteniendo enlaces del front page
Implementando nuestro web scrapper: Obteniendo artículos
Obtención de datos del Artículo
Persistiendo la información "scrapeada"
Pandas
Introducción a Pandas
Estructura de datos: Series
Estructura de datos: DataFrames
Índices y selección
Data wrangling con Pandas
Creación de la receta: preparando la automatización
¿Cómo trabajar con datos faltantes?
Operaciones con Series y DataFrames
Limpiando detalles adicionales
Limpiando detalles en nuestro proyecto
Enriquecimiento de los datos
Valores duplicados en Jupyter
Valores duplicados en Python
Visualización de datos
Intro a Sistemas de Datos
Introducción a los sistemas de datos
Automatización del Pipeline
Cargando datos a SQLite
Contenido Bonus
¿Por qué usar la nube?
Aún no tienes acceso a esta clase
Crea una cuenta y continúa viendo este curso
Para poder experimentar con la web necesitamos un método programático para solicitar URLs y obtener HTML
Requests: Nos permite generar solicitudes a la web dentro de Python y utilizar los diferentes verbos HTTP, normalmente utilizaremos el método GET porque vamos a traer datos.
requests.get('url')
para hacer una solicitud a la web y nos devolverá un objeto response
Todas las solicitudes HTTP tienen metadatos para que los diferentes sistemas y computadoras puedan entender de qué va la solicitud.
Aportes 63
Preguntas 6
Les recomiendo Google Colab, es un Jupyter dentro del ecosistema de Google.
Resumen de lo visto en esta clase 😃
Si alguno quiere ver meetup reciente acerca de web scraping
comparto este link:
https://www.facebook.com/demian.daj/videos/584292125844136/
Códigos de estado
Lo primero que podemos hacer es verificar el código de estado. Los códigos HTTP van de “1XX” a “5XX”. Los códigos de estado frecuentes que probablemente haya visto son “200”, “404” y “500”.
A continuación, le ofrecemos una descripción general rápida del significado de cada código de estado:
1XX: información
2XX: éxito
3XX: redireccionamiento
4XX: error del cliente (usted cometió un error)
5XX: error del servidor (se cometió un error en este)
En general, al realizar sus propias solicitudes lo que busca son códigos de estado del orden del 200.
Requests reconoce que los códigos de estado 4XX y 5XX son errores. Por lo tanto, si se muestran estos códigos de estado, el objeto de respuesta de la solicitud se evalúa como False.
Puede probar si se respondió correctamente una solicitud verificando si la respuesta es verdadera. Por ejemplo:
if res:
print(‘Response OK’)
else:
print(‘Response Failed’)
iniciar Jupyter en el entorno virtual creado en clases previas.
iniciar Anaconda Navigator.
Aca les dejo dos paginas que vimos en cursos anteriores, son muy interesantes y estan hechas para hacer Web Scraping:
https://books.toscrape.com/
https://quotes.toscrape.com/
Con !pip install, en una celda se puede instalar librerias al entorno virtual.
Para que no tengan que escribir requests cada que lo vayas a usar, pueden importarlo así:
import requests as rq
response = rq.get('https://www.platzi.com')
De esta forma solo tienes que poner “rq” y ya python entiende que nos estamos refiriendo a requests
¿Qué significa la respuesta 200 del print(“status code”)?
al colocar
print(response.status_code)
me regreso el numero 503
¿Alguien podría decirme a que se debe y qué significa?
Algunas paginas no tienen text… como por ejemplo : https://www.worldometers.info/es/ en este caso como acceso a los datos de la pagina…
me ha encantado esta herramienta,
Excelente clase, desconocia el manejo de jupyter notebooks, me gusto mucho la herramienta de requests.
Ejemplo de una pagina normal
<!doctype html>
<html lang=es-CO>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>ðPlatzi: âCursos Online Profesionales de TecnologÃa</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/[email protected]/styles.css">
<link rel="stylesheet" href="https://static.platzi.com/mf-landings/assets/home.782227d2be5bb040b290.css" type="text/css" />
<link rel="shortcut icon" href="//static.platzi.com/media/favicons/platzi_favicon.png" />
<link rel="icon" sizes="192x192" href="//static.platzi.com/media/favicons/platzi_favicon.png">
<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="" />
<meta name="description" content="Aprende desde cero a crear el futuro web con nuestros Cursos Online Profesionales de TecnologÃa. ð¡Cursos de Desarrollo, Diseño, Marketing y Negocios!">
<meta name = "theme-color" content = "#15210B" />
<meta property="fb:app_id" content="263680607075199" />
<meta property="fb:admins" content="1030603473" />
<meta property="og:description" content="Aprende desde cero a crear el futuro web con nuestros Cursos Online Profesionales de TecnologÃa. ð¡Cursos de Desarrollo, Diseño, Marketing y Negocios!"/>
<meta property="og:title" content="ðPlatzi: âCursos Online Profesionales de TecnologÃa" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://platzi.com" />
<meta property="og:image" content="https://static.platzi.com/media/meta_tags/og/OG-platzi-Dic-2019.png" />
<meta property="og:site_name" content="https://platzi.com" />
Mercado libre por ejemplo
Si de verdad les interesa el tema hagan el curso de Scrapy. Infinitamente superior a bs4 y ni hablar de Selenium (aunque este si es necesario en algunas ocasiones)
Alguno me puede por favor explicar porque cuando le damos:
Print (response.status_code) tiene que ser igual a 200?
Es importante recordar que se debe instalar Jupyter notebook antes de poder usarlo en el ambiente virtual. Estando dentro del ambiente virtual se escribe:
conda install -c anaconda jupyter
si lo prueban con otras paginas y reciben errores puede que requests.get no este obteniendo la informacion correctamente, utlizando print(response.status_code) a mi me salio 403 y pude ver que la pagina me prohibia la informacion, esta es la manera que encontre de saltearlo, deberia funcionar con cualquier otro navegador
user_agent = 'Mozilla/5.0'
header = {'User-Agent': user_agent}
response = requests.get(url, headers=header)```
Muy buena clase, tiene mucho potencial.-
son cosas pequeñas pero se le olvidan a uno
Muy útil
Esto me pareció bonito, imprimir el contenido de todos los headers:
for i in response.headers:
print (response.headers[i])
interesante lo que se puede hacer, se lo aplique a mi sitio web y es interesante lo que muestra, cuando usas wordpress tienes una API donde puedes obtener estos datos del sitio.
Chevere esta sesion y como realizar la solicitud HTTP
Obtuve este response.text de la página del tiempo
SSLError: HTTPSConnectionPool(host=‘servinformacion.com’, port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError(“bad handshake: Error([(‘SSL routines’, ‘tls_process_server_certificate’, ‘certificate verify failed’)])”)))
EN ALGUNAS MARCA ESTE ERROR COMO QUE SE NECESITA ALGO MAS PARA PODER VER LA INFORMACION. SI ALGUIEN MAS LE PASO CON ALGUNA PAGINA Y LO PUDO SOLUCIONAR SE LO AGRADEZCO.
Super esta clase me gusto demasiado.
¿Por qué no te hace falta poner el import o volver a declarar la variable response en cada nueva fila?
Yo, si no lo hago, me da error al ejecutar la nueva línea
Una clase bastante interesante, yo hacia esto con selenium (muchas veces con prueba y error). Muy agradecido
Con estas clases podrán resolver el ejercicio número 17 de la página de “Practice Python” utilizando requests y beautifulsoup.
.
Una buena manera de poner en práctica lo aprendido de forma simple.
Solicitudes a la web
import requests
response = requests.get('https://www.platzi.com')
response??
print(dir(response))
print(response.status_code)
print(response.headers)
print(response.headers['Date'])
print(response.text)```
Los famosos predicados 😃
Experimentando un poco con requests, me topé con que una pagína de bolsa de empleo, me retorno el error 403 como status code, por otro lado cuando aplique el mismo procedimiento, para twitter, retorno 200, seguramente fue labor de Elon. Like si lees esto después de que Elon Musk allá comprado twitter.
Siempre que la pagina funcione con html. puedo usar requests
en cuanto a las paguinas que le puedo hacer web scraping
-sitios de monitoreo climatico
-sitio de ventas de productos
-sitios de noticias como el pais, cnn, RT
-sitios de reseña de peliculas
Nota revisar las politicas de la web a la que le quieres hacer scraping NO SIEMPRE ES LEGAL
Lo aplique en la pagina donde trabajo 😃…
Hola a [email protected]!
Que debería realizar para que en los requests me salgan las tildes y las Ñ cuando ejecuto response.text?
Para poder experimentar con la web necesitamos un método programático para solicitar URLs y obtener HTML
Requests: Nos permite generar solicitudes a la web dentro de Python y utilizar los diferentes verbos HTTP, normalmente utilizaremos el método GET porque vamos a traer datos.
requests.get(‘url’) para hacer una solicitud a la web y nos devolverá un objeto response
Todas las solicitudes HTTP tienen metadatos para que los diferentes sistemas y computadoras puedan entender de qué va la solicitud.
Ingresé el requests:
res=requests.get(‘https://herramientas.datos.gov.co/es/blog/visualizaciones-de-los-mejores-conjuntos’)
print(res)
se obtiene error, si alguien puede probarlo y explicar qué sucede sería de ayuda.
interesante!
Qué genial! solo con la url se trae el html
Este es el ejemplo de una SPA
 donde decía que no debíamos scrappear la página de platzi jajaja
Herramientas súper útiles, para poder realizar el análisis de las estructuras y contenidos de los elementos que se encuentran en la web. Estructuras de páginas y estadísticas entre oto datos.
No olviden para activar jupiter
jupyter notebook
Excelente Explicación, Gracias Profesor.
Muy bueno
Muy buena explicacion!
Excelente, por ahora realizando los ejercicios exitosamente.
No siempre tendremos los Datasets que queremos por lo que hay que saber cómo extraerla y construirla
hay información visible, pero también la hay escondida a través de metadatos en el html
Las tecnologías web, el internet es la red de redes, donde millones y millones de computadoras se conectan para transferir información.
Pero también se componen de otros elementos
Extensiones telefónicas, hablando a través del internet (voip) mail (pop3, imap) compartir archivos (ftp)
Une varias redes, se puede usar para muchas cosas
Carretera de información
Se pueden acceder con urls
Elementos basicos de la web
HTML estructura, pedazo de código, un arbol de tags, un lenguaje parfa anotar pedazos de información,
Javascript le da interactividad a la web
Json forma de transmitir datos entre servidores y es el standard en la que servidores web se comunican con sus servidores backend
Nos interesa el HTML
Javascript no es util
Muchas paginas parecen vacias, aplicacioens que su motor basico es javascript
Archivos JSON si nos interesan
Elementos bases que vamos a manipular y crear Datasets que no existen en otros lados más que en esos.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.