Programa de Python para raspar recursivamente todas las URL del sitio web

En este tutorial, veremos cómo podemos raspar recursivamente todas las URL del sitio web.

La recursividad en informática es un método para resolver un problema donde la solución depende de soluciones a instancias más pequeñas del mismo problema. Dichos problemas generalmente se pueden resolver mediante iteración, pero esto necesita identificar e indexar las instancias más pequeñas en el momento de la programación.

Nota: Para obtener más información, consulte Recursividad

Módulos requeridos e Instalación

  • Requests:
    Requests le permite enviar requests HTTP/1.1 de forma extremadamente sencilla. No es necesario agregar manualmente strings de consulta a sus URL.
    pip install requests
  • Beautiful Soup:
    Beautiful Soup es una biblioteca que facilita extraer información de las páginas web. Se asienta sobre un analizador HTML o XML, proporcionando modismos Pythonic para iterar, buscar y modificar el árbol de análisis.
    pip install beautifulsoup4

Código:

from bs4 import BeautifulSoup
import requests
   
# lists
urls=[]
   
# function created
def scrape(site):
       
    # getting the request from url
    r = requests.get(site)
       
    # converting the text
    s = BeautifulSoup(r.text,"html.parser")
       
    for i in s.find_all("a"):
          
        href = i.attrs['href']
           
        if href.startswith("/"):
            site = site+href
               
            if site not in  urls:
                urls.append(site) 
                print(site)
                # calling it self
                scrape(site)
   
# main function
if __name__ =="__main__":
   
    # website to be scrape
    site="http://example.webscraping.com//"
   
    # calling function
    scrape(site)
    

Producción :

python-web-scraping

Publicación traducida automáticamente

Artículo escrito por rakshitarora y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *