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(鈥楻esponse OK鈥)
else:
print(鈥楻esponse 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 鈥渞q鈥 y ya python entiende que nos estamos refiriendo a requests

驴Qu茅 significa la respuesta 200 del print(鈥渟tatus 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(鈥渂ad handshake: Error([(鈥楽SL routines鈥, 鈥榯ls_process_server_certificate鈥, 鈥榗ertificate 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 鈥淧ractice 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(鈥榰rl鈥) 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.