El protocolo HTTP (Protocolo de Transferencia de Hipertexto) es un protocolo de comunicación estándar utilizado para la transmisión de información en la World Wide Web. Es un protocolo de solicitud-respuesta que funciona entre un cliente (generalmente un navegador web) y un servidor.
Solicitud y Respuesta:
Métodos HTTP:
Códigos de Estado:
Seguridad:
Una página HTML (Lenguaje de Marcado de Hipertexto) es un documento estructurado que utiliza elementos marcados para definir y representar el contenido en un formato legible para navegadores web. Entre sus componentes encontramos:
Elementos y Etiquetas:
<p>
es la etiqueta de inicio para un párrafo, y </p>
es la etiqueta de cierre.Atributos:
id
, class
, style
, etc. Por ejemplo, en <a href="http://example.com">link</a>
, href
es un atributo que indica la URL a la que apunta el enlace.Contenido:
Recursos Externos:
Estructura Básica:
<html>
, <head>
(que contiene metadatos y enlaces a recursos externos) y <body>
(que contiene el contenido principal de la página).<!DOCTYPE html>
<html>
<head>
<title>Mi primera página HTML</title>
</head>
<body>
<h1>Encabezado Principal</h1>
<p>Esto es un párrafo de texto.</p>
<a href="http://example.com">Un enlace a example.com</a>
</body>
</html>
En este ejemplo:
<!DOCTYPE html>
es una declaración que le dice al navegador que esta es una página HTML5.<html>
es el elemento raíz que contiene todos los demás elementos.<head>
contiene metadatos y enlaces a recursos externos (en este caso, solo un título).<body>
contiene el contenido principal de la página, incluyendo un encabezado (<h1>
), un párrafo (<p>
), y un enlace (<a>
).El DOM, o Modelo de Objetos del Documento, es una interfaz de programación para documentos web. Representa la estructura lógica de un documento y define la forma en que la estructura puede ser manipulada por los programas. El DOM se estructura como un árbol de nodos, donde cada nodo representa un objeto que corresponde, generalmente, con algún elemento del documento HTML. Los nodos pueden tener hijos, padres y hermanos.
Document
|
|- <html>
|
|- <head>
| |
| |- <title>
| |
| |- "Mi primera página HTML"
|
|- <body>
|
|- <h1>
| |
| |- "Encabezado Principal"
|
|- <p>
| |
| |- "Esto es un párrafo de texto."
|
|- <a>
|
|- "Un enlace a example.com"
|
|- (atributo href con valor "http://example.com")
El web scraping es una técnica utilizada para extraer información de sitios web. En su forma más básica, implica recuperar una página web y luego extraer datos necesarios de ella. Entre las aplicaciones más comunes del web scraping encontramos:
Análisis de Datos y Minería de Datos: Para recopilar grandes conjuntos de datos para análisis posterior.
SEO (Optimización de Motores de Búsqueda): Para analizar datos de sitios web, como metadatos, palabras clave, backlinks, etc.
E-commerce: Para monitorear precios y disponibilidad de productos en diferentes plataformas.
Investigación de Mercados: Para recopilar datos sobre tendencias del mercado, competencia, preferencias de los consumidores, etc.
Automatización de Tareas: Para automatizar tareas repetitivas, como la entrada de datos.
Una de las librerías más usadas en este ámbito es Beautiful Soup.
Beautiful Soup es una biblioteca de Python para extraer datos de archivos HTML y XML. Con ella puedes hacer:
Parsing de HTML y XML: Beautiful Soup puede parsear (analizar y estructurar) documentos HTML y XML, lo que facilita la extracción de datos de estos tipos de archivos.
Navegación en el Árbol de Sintaxis: Una vez que un documento ha sido parseado, Beautiful Soup permite navegar y buscar a través del árbol de sintaxis de forma fácil y efectiva, utilizando diversos métodos de búsqueda.
Manipulación de Documentos: Además de permitir la extracción de datos, Beautiful Soup también puede modificar el documento, lo que permite, por ejemplo, cambiar tags, atributos, y contenido de texto.
Extracción de Información: Puedes extraer información específica de un documento, como obtener todos los URLs en una página, o encontrar todos los elementos con una clase específica.
pip install beautifulsoup4
pip install lxml
Vamos a acceder a mi web (http://cayetanoguerra.github.io/ia/) y extraer información de ella. Concretamente, queremos extraer el título y los temas que hay. Sabemos que están bajo los tags <h1>
y <h3>
respectivamente.
from bs4 import BeautifulSoup
import requests
response = requests.get('http://cayetanoguerra.github.io/ia/')
soup = BeautifulSoup(response.content, 'lxml')
# Encuentra el primer elemento <h1>
h1 = soup.find('h1')
print(h1.text)
# Encuentra todos los elementos <h3>
paragraphs = soup.find_all('h3')
for p in paragraphs:
print(p.text)
Inteligencia Artificial Python Búsquedas Redes neuronales Aprendizaje por refuerzo Sistemas basados en reglas Computación evolutiva Redes Bayesianas Planificación Machine Learning Procesamiento del Lenguaje Natural (NLP) Misc.
Supongamos ahora que queremos sacar todo el texto la página web de un periódico. Para ello, podemos usar el método get_text()
de la clase BeautifulSoup
.
from bs4 import BeautifulSoup
import requests
response = requests.get('https://www.marca.com/futbol/seleccion/2023/09/06/64f85cf9e2704e573c8b459c.html')
soup = BeautifulSoup(response.content, 'lxml')
text = soup.get_text("|", strip=True)
print(text)
Selección española: Carvajal: "En ningún momento he dicho que Jenni no sea la víctima" | Marca|Es noticia:|Lista seleccion española femenina|Techo Santiago Bernabéu|Athletic bandera española|Aston Martin|AEMET tormentas|Arturo Pérez-Reverte Rubiales|Garbiñe Muguruza nueva vida|Granada - Girona TV|TardeAR horario|TardeAR colaboradores|Patricia Pardo|Pasapalabra invitados|Hormiguero invitados|Jorge Rey golondrinas|Precio luz hoy|F1 GP Japón horarios|Resultados fútbol|Calendario F1|Calendario Liga|Bienestar|Coches|Portada de Marca|Edición seleccionada|ES|Ediciones:|ES (España)|EN (English)|MX (México)|US (USA)|Escoge tu edición de Marca.com favorita|Siempre que entres en Marca.com se cargará esta edición|ES (España)|EN (English)|MX (México)|US (USA)|Confirmar|Suscríbete|Fútbol|Baloncesto|Motor|Polideportivo|Coches|Última hora|Fantasy|Agenda TV|Más|Cerrar|06 de septiembre de 2023|Actualizado a las 16:41 h.|Portada|Volver a:|Fútbol|Selección Española|Noticias|Mundial 2022|EURO 2024|UEFA Nations League|Europeo Sub-21|Palmarés|Más|Cerrar|Futbol/seleccion|Compartir en Facebook|Compartir en Twitter|Enviar por email|España|LaLiga EA Sports|Calendario|Clasificación|Equipos|Liga F|Calendario|Clasificación|LaLiga Hypermotion|Calendario|Clasificación|Equipos|Primera Federación|Segunda Federación|Tercera Federación|Copa del Rey|Copa de la Reina|Más fútbol|Supercopa de España|Supercopa de España femenina|Selección Española|UEFA Nations League|Selección Española femenina|UEFA Nations League femenina|Mundial 2023|Fútbol Sala|Premios MARCA|Internacional|Premier League|Calendario|Clasificación|Equipos|Bundesliga|Calendario|Clasificación|Equipos|Serie A|Calendario|Clasificación|Equipos|Ligue 1|Calendario|Clasificación|Equipos|Primeira Liga de Portugal|Calendario|Clasificación|Equipos|Liga Saudí|Calendario|Clasificación|Champions League|Calendario|Clasificación|Equipos|Champions League femenina|Calendario|Clasificación|Europa League|Calendario|Clasificación|Equipos|Conference League|Calendario|Clasificación|Equipos|Youth League|Calendario|Clasificación|Supercopa de Europa|Mundial de clubes|Calendario|Mundial 2026|Mundial Femenino 2023|EURO 2024|Copa África|América|Argentina|Calendario|Clasificación|Chile|Calendario|Clasificación|Colombia|Calendario|Clasificación|Estados Unidos|Calendario|Clasificación|México|Calendario|Clasificación|Venezuela|Calendario|Clasificación|Leagues Cup|Calendario|Clasificación|CONMEBOL Libertadores|Calendario|Clasificación|Copa América|Calendario|Más América|Campeonato Brasileiro|Liga Bolivia|Paraguayan Primera División|Primera División del Perú|Serie A de Ecuador|Uruguayan Primera División|Destacamos|Atletismo|Balonmano|Ciclismo|Golf|Tenis|Boxeo|Otros deportes|Ajedrez|Deportes Aventura|Deportes Invierno|eSports|Hípica|Hockey Hierba|Hockey Patines|Juegos Olímpicos|Juegos Olímpicos de Invierno|MMA|Natación|NFL|NHL|Olimpismo|Pádel|Paralímpicos|Rugby|Tenis de mesa|Toros|Triatlón|Turf|UFC|Vela|Voleibol|Waterpolo|SELECCIÓN ESPAÑOLA|Selección española|Carvajal: "En ningún momento he dicho que Jenni no sea la víctima"|El lateral compareció en rueda de prensa y repasó la actualidad de la selección|Carvajal: "Hay que solidarizarse con Jenni, pero no creo que Rubiales lo esté pasando bien"|JOSÉ FÉLIX DÍAZ|Actualizado|06/09/2023 -|13:09|CEST|Compartir en Facebook|Compartir en Twitter|Compartir en Telegram|Compartir en Whatsapp|Enviar por email|552|Mostrar comentarios|Selección.|Así ha sido la rueda de prensa de Carvajal|Entrevista.|Carvajal: "¿Jenni Hermoso víctima? Hay estamentos legales que lo deben decidir"|D|ani Carvajal pasó por la sala de prensa. El madridista es uno de los capitanes de la selección y una de las voces autorizadas. "|Queda bastante claro lo que pienso. Solo defiendo la presunción de inocencia. No puedes culpabilizar a nadie sin sentencia alguna|. El comunicado resultó complicado por poner de acuerdo a 24 personas. Lo hicimos con buena intención. Muy orgulloso del éxito que lograron. Las felicité. El sábado pasado recibieron un homenaje del Bernabéu".|Respecto a las consecuencias de lo que está pasando.|"Para lo bueno como para lo malo, la repercusión es muy alta. No voy a opinar a nivel personal. Cada uno puede hacer lo que quiera. No soy nadie para juzgar a nadie. En ningún momento he dicho que Jenni no sea la víctima, he dicho que hay que preservar la presunción de inocencia. No creo que el presidente esté pasando momentos agradables, pero no estoy aquí para juzgar a nadie."|No soy nadie para juzgar a nadie. En ningún momento he dicho que Jenni no sea la víctima|Carvajal - Jugador Selección Española|Respecto a Rubiales afirma.|"La opinión que tengo de Rubiales como presidente tengo una opinión excelente. No soy quien para limpiar o deshacer en la Federación. ¿La respuesta de Rubiales? No la vi. Dijimos que estábamos en desacuerdo con lo hecho por él. Defendemos los valores del deporte".|Habló del vestuario.|"Está focalizado en el partido de Georgia, que es vital para la clasificación. Dimos el comunicado para que se hablara de fútbol. Álvaro es el capitán. Ha pasado por muchos clubes. Tiene capacidad de liderazgo. Al final tenemos un alcance social muy grande. Estamos en el foco de mucha gente. No es un tema agradable para nosotros, ojalá solo se hubiese hablado del campeonato que hemos ganado. Sabemos lo que significa el fútbol para España y buscamos mostrar nuestro mejor nivel y a nivel mediático buscar que todo se calme".|La opinión que tengo de Rubiales como presidente tengo una opinión excelente|Carvajal - Jugador Selección española|Carvajal no valora el adiós de Vilda.|"No puedo responder. Son decisiones que se toman de manera interna. A muerte con el mister desde el momento que estamos aquí, las otras decisiones no nos competen a nosotros. El mister aclaró su situación. Claro que estamos con él. Nos llevó a ganar la Liga de las Naciones. Cada entrenador tiene sus matices. Nos pide transiciones más rápidas y ser más directos en la fase ofensiva, terminar jugadas".|El lateral ya es todo un veterano.|"Satisfacción plena. Cada concentración la afronto al máximo, como si fuera la última. Los jóvenes vienen apretando muy fuerte y esa es una realidad".|No echa en falta a un nueve en el Real Madrid.|"Somos los más realizadores. Ya lo dijo Ancelotti que había venido Bellingham y que iba a ser importante. Tenemos un equipo muy completo en todas las líneas y esperamos poder dar muchas alegrías a losaficionados".|Selección de Fútbol de España|Dani Carvajal|Tertulia|El Corrillo: "A Carvajal se le critica injustamente, parece que no existe la libertad de expresión en España"|Selección Española|Carvajal: "¿Jenni Hermoso víctima? Hay estamentos legales que lo deben decidir"|Selección Española|Marc Crosas ataca a Carvajal por su postura en el 'caso Rubiales': "Más machista y más facha no se puede ser..."|Ver enlaces de interés|LaLiga EA Sports|LaLiga Hypermotion|Premier League|Fichajes LaLiga|Resultados LaLiga|Clasificacion Liga|Convocatoria España|Granada - Girona TV|Andorra - Oviedo horario|Techo Santiago Bernabeu|Selección femenina|Noticias más leídas|Ver más|"¿Por qué no lo ha hecho antes y nos ha evitado estas dos semanas?"|Joselu reactiva el plan B|El exfutbolista Koke, en prisión por narcotráfico: "Tengo mis contactos, pero no soy Pablo Escobar"|Omar Montes la lía en un concierto de Ana Mena: "¡Una vergüenza!"|Paul Pogba da positivo en un control antidopaje|552|Comentarios|MickeyDonovan|#1|06/09/2023|13:13 horas|Valiente|Holt|#14|06/09/2023|13:15 horas|Gracias Carvajal, por luchar por recuperar algo de libertad de expresión, de opinión y de pensamiento ante la dictadura feminista y de extrema izquierda|Ver 552 comentarios|Mostrar comentarios|Volver a la noticia|'Carvajal: "En ningún momento he dicho que Jenni no sea la víctima"'|Cargando siguiente contenido|Otras webs de Unidad Editorial|Marca|App Marca|Clasificación LaLiga|Calendario LaLiga|Hemeroteca Marca|Marca Gaming|Marca en Orbyt|Ocio y Moda|Tiramillas|Moda - Telva|Traductor|Programación TV|Marca Entradas|Bienestar|Unidad Editorial|El Mundo|Expansión|CuídatePlus|Diario Médico|Cooking Recetas|Suscripción Marca|Formación y Empleo|Escuela Unidad Editorial|Unidad Editorial|Expansión y Empleo|©|Unidad Editorial Información Deportiva, S.L.U. Todos los derechos reservados.|Política de cookies|Configuración de cookies|Política de privacidad|Términos y condiciones de uso|Certificado por OJD|Contacto|Publicidad|Ayuda|Nuestro equipo|Venta de contenidos|Código ético|Síguenos en|Facebook|Twitter|RSS|España|Liga Endesa|Calendario|Clasificación|Liga Endesa femenina|LEB Oro|LEB Plata|Copa del Rey|Cuadro y resultados|Supercopa Endesa|Cuadro y resultados|Basket FEB|Selección|Europa|Euroliga|Clasificación|Calendario|Eurocup|Resultados y Clasificación|FIBA Champions League|Resultados y Clasificación|Internacional|NBA|Calendario|Clasificaciones|Equipos|Mundial 2023|Coches|Fórmula 1|Calendario|Clasificación de pilotos|Clasificación de constructores|Grandes Premios de Fórmula 1|Bahrein|Arabia Saudí|Australia|Azerbaiyán|Miami|Emilia Romagna|Mónaco|España|Canadá|Austria|Gran Bretaña|Hungría|Bélgica|Países Bajos|Italia|Singapur|Japón|Qatar|Estados Unidos|México|Brasil|Las Vegas|Emiratos Árabes|Rallies|Calendario|Clasificación de pilotos|Clasificación de equipos|Dakar|WEC|Indycar|24 Horas de Daytona|24 Horas de Le Mans|Motos|Moto GP|Calendario|Clasificación de pilotos|Grandes Premios de Moto GP|Portugal|Argentina|Las Américas|España|Francia|Italia|Alemania|Países Bajos|Kazajistán|Gran Bretaña|Austria|Cataluña|San Marino|India|Japón|Indonesia|Australia|Tailandia|Malasia|Qatar|Comunidad Valenciana|Modelos de coches|Modelos|Comparador de coches|Pruebas de coches|Ocio|Vídeos|Coches y motos|Coches|Motos|Tráfico|Tecnología|Industria|Salones del Automóvil|Frankfurt|Shanghái|Ginebra|Los Ángeles|París|Y además|Accesorios|Recomendador/Comparador
Flask es un microframework de Python para desarrollar aplicaciones web. Es muy conocido por su simplicidad y flexibilidad.
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run()