Skip to content

Instantly share code, notes, and snippets.

@cargabsj175
Created September 10, 2023 10:38
Show Gist options
  • Save cargabsj175/a49613010f05a29a44ba9b127352d75f to your computer and use it in GitHub Desktop.
Save cargabsj175/a49613010f05a29a44ba9b127352d75f to your computer and use it in GitHub Desktop.
Obtener los títulos H de una URL dada
import requests
from bs4 import BeautifulSoup
import csv
# Función para obtener los títulos H1 a H6 de una URL
def obtener_titulos(url):
try:
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
titulos = [(titulo.name, titulo.text.strip()) for titulo in soup.find_all(['h1', 'h2', 'h3', 'h4', 'h5', 'h6'])]
return titulos
else:
print(f"Error al obtener la página: {response.status_code}")
return None
except Exception as e:
print(f"Error de conexión: {str(e)}")
return None
# Obtener la URL a través de un prompt
url = input("Por favor, ingresa la URL de la página que deseas analizar: ")
# Obtener los títulos con sus tipos (H1, H2, H3, etc.)
titulos = obtener_titulos(url)
if titulos:
# Obtener el nombre del archivo CSV
nombre_archivo = titulos[0][1] if titulos else 'sin_titulos'
nombre_archivo = nombre_archivo.replace(' ', '_').replace('/', '_') + '.csv'
# Crear el archivo CSV con cabeceras por tipo de título
with open(nombre_archivo, 'w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow(['Tipo', 'Título'])
writer.writerows(titulos)
print(f"Títulos guardados en {nombre_archivo}")
else:
print("No se pudieron obtener los títulos.")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment