Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Realizar solicitudes HTTP con Python

12/38
Recursos

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

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

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?

Realizar solicitudes HTTP con Python

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
![](

Muy interesante la forma de capturar datos HTML de la web.

Todo lo hice desde Colaboratory, Ok.

Saludos… yo tengo instalado solo el Jupyter y Python 3.8 dejo link de como instalarlo solo https://www.youtube.com/watch?v=6Vr9ZUntCyE

Ojo: La dirección de Platzi ya no es Http://www.platzi.com es Http://platzi.com. si ponen el www seguramente les de error.

Oh perfecto, esto sirve mucho para hacer auditorías SEO de sitios webs, como auditorias de la competencia de nuestros clientes!

Muy buena explicacion, todo va cogiendo un sabor interesante. Gracias

requests??: Para acceder al código fuente.

La respuesta que obtuve en el metodo status_code fue 504

504 Gateway Timeout
Esta respuesta de error es dada cuando el servidor está actuando como una puerta de enlace y no puede obtener una respuesta a tiempo.

Todas las requests me funcionaron

Si alguno no le detecta el entorno virtual en jupyter creado con con conda en este enlace podeis ver como intalar el kernel de entorno en jupyter.
https://ipython.readthedocs.io/en/stable/install/kernel_install.html#kernels-for-different-environments

Hey! Recuerdo haber visto un vídeo de un profe (no se si fue el propio Freddy) 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.