Generador de mapas del sitio - Python Programming Exercise

En este ejercicio, desarrollarás un programa en Python que genere un mapa del sitio para un sitio web. Este ejercicio es perfecto para practicar el rastreo web, la recuperación de URL y la generación de XML en Python. Al implementar este programa, obtendrás experiencia práctica en el manejo del rastreo web, la recuperación de URL y la generación de XML en Python. Este ejercicio no solo refuerza tu comprensión del rastreo web, sino que también te ayuda a desarrollar prácticas de codificación eficientes para gestionar las interacciones con el usuario. Además, este ejercicio proporciona una excelente oportunidad para explorar la versatilidad de Python en aplicaciones del mundo real. Al trabajar con el rastreo web, la recuperación de URL y la generación de XML, aprenderás a estructurar tu código de manera eficiente, lo cual es una habilidad crucial en muchos escenarios de programación. Este ejercicio también te anima a pensar críticamente sobre cómo estructurar tu código para la legibilidad y el rendimiento, convirtiéndolo en una valiosa adición a tu portafolio de programación. Ya seas un principiante o un programador experimentado, este ejercicio te ayudará a profundizar tu comprensión de Python y mejorar tus habilidades para resolver problemas.

 Categoría

Uso de bibliotecas adicionales

 Ejercicio

Generador De Mapas Del Sitio

 Objectivo

Desarrollar un programa Python que genere un mapa del sitio para un sitio web. El programa debe rastrear un sitio web determinado, recuperar todas las URL y generar un mapa del sitio XML que incluya estas URL. Asegúrese de que el programa gestione varios tipos de enlaces (internos, externos) y permita la personalización de la profundidad del rastreo. Incluir el manejo de errores para URL no válidas y problemas de red.

 Ejemplo de ejercicio de Python

 Copiar código Python
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin, urlparse
import xml.etree.ElementTree as ET
import time


def is_valid_url(url):
    """Check if the URL is valid and returns a response."""
    try:
        response = requests.get(url, timeout=5)
        return response.status_code == 200
    except requests.exceptions.RequestException:
        return False


def get_links_from_page(url, depth, max_depth, visited_urls):
    """Recursively get all internal links from a page, respecting depth limit."""
    if depth > max_depth or url in visited_urls:
        return []

    visited_urls.add(url)
    links = []

    try:
        response = requests.get(url)
        if response.status_code == 200:
            soup = BeautifulSoup(response.text, 'html.parser')
            for link in soup.find_all('a', href=True):
                href = link.get('href')
                # Join relative URLs with the base URL
                full_url = urljoin(url, href)
                
                # Only follow internal links (same domain)
                if urlparse(full_url).netloc == urlparse(url).netloc:
                    links.append(full_url)
                    
                    # Recursively crawl the page if we're not at max depth
                    links += get_links_from_page(full_url, depth + 1, max_depth, visited_urls)

    except requests.exceptions.RequestException as e:
        print(f"Error fetching {url}: {e}")
    return links


def generate_sitemap(url, max_depth=3):
    """Generate an XML sitemap by crawling the website."""
    visited_urls = set()
    urls = get_links_from_page(url, 0, max_depth, visited_urls)

    # Create XML structure
    urlset = ET.Element("urlset", xmlns="http://www.sitemaps.org/schemas/sitemap/0.9")
    for site_url in urls:
        url_element = ET.SubElement(urlset, "url")
        loc = ET.SubElement(url_element, "loc")
        loc.text = site_url

    # Build and save the XML sitemap
    tree = ET.ElementTree(urlset)
    sitemap_filename = "sitemap.xml"
    tree.write(sitemap_filename)
    print(f"Sitemap generated and saved as {sitemap_filename}")


def main():
    """Main function to accept user input and generate the sitemap."""
    website_url = input("Enter the website URL to generate the sitemap: ").strip()
    if not website_url.startswith('http'):
        website_url = 'http://' + website_url

    # Validate the URL
    if not is_valid_url(website_url):
        print(f"Invalid URL or network issue: {website_url}")
        return

    # Get depth input from the user
    try:
        max_depth = int(input("Enter the maximum crawl depth (default is 3): ").strip())
    except ValueError:
        max_depth = 3

    # Start the sitemap generation
    print(f"Generating sitemap for {website_url} with a maximum depth of {max_depth}...")
    generate_sitemap(website_url, max_depth)


if __name__ == "__main__":
    main()

 Output

Enter the website URL to generate the sitemap: https://example.com
Enter the maximum crawl depth (default is 3): 2
Generating sitemap for https://example.com with a maximum depth of 2...
Sitemap generated and saved as sitemap.xml

 Comparte este ejercicio de Python

 Más Ejercicios Programación Python de Uso de bibliotecas adicionales

¡Explora nuestro conjunto de ejercicios de programación Python! Estos ejercicios, diseñados específicamente para principiantes, te ayudarán a desarrollar una sólida comprensión de los conceptos básicos de Python. Desde variables y tipos de datos hasta estructuras de control y funciones simples, cada ejercicio está diseñado para desafiarte de manera gradual a medida que adquieres confianza en la codificación en Python.

  •  Generar una lista de imágenes en formato HTML

    En este ejercicio, desarrollarás un programa en Python que genere un archivo HTML que muestre una lista de imágenes de un directorio especificado. Este ejercicio...

  •  Recuperar información del sistema

    En este ejercicio, desarrollarás un programa en Python que recupere y muestre información del sistema, como el sistema operativo, detalles de la CPU, uso de memoria y...

  •  Generador de mapas del sitio V2

    En este ejercicio, desarrollarás una versión mejorada de un generador de mapas del sitio en Python (Sitemap Generator V2). Este ejercicio es perfecto para prac...

  •  Explorando un directorio

    En este ejercicio, desarrollarás un programa en Python que explore un directorio especificado y liste todo su contenido, incluidos archivos y subdirectorios. Este ...

  •  Explorando Subdirectorios

    En este ejercicio, desarrollarás un programa en Python que explore un directorio especificado y liste todos los subdirectorios dentro de él. Este ejercicio es ...

  •  Trabajar con fecha y hora

    En este ejercicio, desarrollarás un programa en Python que trabaje con fechas y horas. Este ejercicio es perfecto para practicar la manipulación de fechas y ho...