Python | Herramientas en el mundo del Web Scraping

El raspado de páginas web se puede hacer usando múltiples herramientas o usando diferentes marcos en Python. Hay una variedad de opciones disponibles para extraer datos de una página web, cada una de las cuales se adapta a diferentes necesidades.

Primero, comprendamos la diferencia entre web-scraping y web-crawling. El rastreo web se usa para indexar la información en la página usando bots también conocidos como rastreadores. Por otro lado, Web-scraping es una forma automatizada de extraer información/contenido utilizando bots también conocidos como Scrapers.

Veamos algunas de las herramientas de raspado web más utilizadas para Python3:

  1. Urllib2
  2. Peticiones
  3. HermosaSopa
  4. Lxml
  5. Selenium
  6. Sopa Mecánica

Entre todos los marcos/herramientas disponibles, solo urllib2 vienen preinstalados con Python. Por lo tanto, todas las demás herramientas deben instalarse, si es necesario. Analicemos todas estas herramientas en detalle.

  1. Urllib2: Urllib2 es un módulo de python utilizado para obtener URL. Ofrece una interfaz muy simple, en forma de función urlopen, que es capaz de obtener URL utilizando diferentes protocolos como HTTP, FTP, etc.

    # Using urllib2 module
    from urllib.request import urlopen
      
    html = urlopen("http://geeksforgeeks.org")
      
    print(html.read())

    Producción :
    GfGurllib2

  2. Requests:Requests no viene preinstalado con Python. Requests permite enviar requests HTTP/1.1. Se pueden agregar encabezados, datos de formulario, archivos de varias partes y parámetros con diccionarios simples de Python y acceder a los datos de respuesta de la misma manera.

    Las requests de instalación se pueden hacer usando pip.

    pip install requests

    # Using requests module
    import requests
      
    # get URL
    req = requests.get('https://www.geeksforgeeks.org/')
      
    print(req.encoding)     
    print(req.status_code) 
    print(req.elapsed)     
    print(req.url)         
    print(req.history)     
    print(req.headers['Content-Type'])

    Producción :
    GfGrequests

  3. BeautifulSoup:Beautiful soup es una biblioteca de análisis que puede utilizar diferentes analizadores. El analizador predeterminado de Beautiful Soup proviene de la biblioteca estándar de Python. Crea un árbol de análisis que se puede usar para extraer datos de HTML; un conjunto de herramientas para diseccionar un documento y extraer lo que necesita. Convierte automáticamente los documentos entrantes a Unicode y los documentos salientes a UTF-8.

    pip se puede utilizar para instalar BeautifulSoup:

    pip install beautifulsoup4

    # importing BeautifulSoup form
    # bs4 module
    from bs4 import BeautifulSoup
      
    # importing requests
    import requests
      
    # get URL
    r = requests.get("https://www.geeksforgeeks.org")
      
    data = r.text
    soup = BeautifulSoup(data)
      
    for link in soup.find_all('a'):
        print(link.get('href'))

    Producción :
    GfGBeautifulSoup

  4. Lxml:Lxml es una biblioteca de análisis HTML y XML de alto rendimiento y calidad de producción. Si el usuario necesita velocidad, elija Lxml. Lxml tiene muchos módulos y uno de los módulos es etree , que es responsable de crear elementos y estructura usando estos elementos.

    Uno puede comenzar a usar lxml instalándolo como un paquete de python usando pip la herramienta:

    pip install lxml

    # importing etree from lxml module
    from lxml import etree
      
    root_elem = etree.Element('html')
    etree.SubElement(root_elem, 'head')
    etree.SubElement(root_elem, 'title')
    etree.SubElement(root_elem, 'body')
      
    print(etree.tostring(root_elem, pretty_print = True).decode("utf-8"))

    Producción :
    GfGlxml

  5. Selenium: algunos sitios web usan javascript para servir contenido. Por ejemplo, pueden esperar hasta que te desplaces hacia abajo en la página o hagas clic en un botón antes de cargar cierto contenido. Para estos sitios web, se necesita selenium. Selenium es una herramienta que automatiza los navegadores, también conocidos como web-drivers. También viene con enlaces de Python para controlarlo directamente desde su aplicación.

    pip El paquete se usa para instalar Selenium:

    pip install selenium

    # importing webdriver from selenium module
    from selenium import webdriver
      
    # path for chromedriver
    path_to_chromedriver ='/Users/Admin/Desktop/chromedriver'
      
    browser = webdriver.Chrome(executable_path = path_to_chromedriver)
      
    browser.get(url)

    Producción :
    GfGSelenium
    GfGSelenium2

  6. MechanicalSoup:MechanicalSoup es una biblioteca de Python para automatizar la interacción con sitios web. Almacena y envía automáticamente cookies, sigue redireccionamientos y puede seguir enlaces y enviar formularios. No hace JavaScript.

    Uno puede usar el siguiente comando para instalar MechanicalSoup:

    pip install MechanicalSoup

    # importing mechanicalsoup
    import mechanicalsoup
      
    browser = mechanicalsoup.StatefulBrowser()
    value = browser.open("http://geeksforgeeks.org/")
    print(value)
      
    value1 = browser.get_url()
    print(value1)
      
    value2 = browser.follow_link("forms")
    print(value2)
      
    value = browser.get_url()
    print(value)
  7. Scrapy: Scrapy es un marco de rastreo web colaborativo y de código abierto para extraer los datos necesarios de los sitios web. Originalmente fue diseñado para web scraping. Se puede usar para administrar requests, preservar sesiones de usuario, seguir redireccionamientos y manejar canalizaciones de salida.

    Hay 2 métodos para instalar scrapy:

    1. Usando pipa:
      pip install scrapy
    2. Usando Anaconda: Primero instale Anaconda o Miniconda y luego use el siguiente comando para instalar scrapy:
      conda install -c conda-forge scrapy

    # importing scrapy module
    import scrapy
      
    class GeeksSpider(scrapy.Spider):
          
        name = "geeks_spider"
          
        start_urls = ['https://www.geeksforgeeks.org']
          
        # Parse function
        def parse(self, response):
              
            SET_SELECTOR = 'geeks'
            for geek in response.css(SET_SELECTOR):
                pass

    Use el siguiente comando para ejecutar un código scrapy:

    scrapy runspider samplescapy.py

    Producción :GfGscrapy

Los módulos discutidos anteriormente son los scrappers más utilizados para Python3. Aunque hay algunos más pero ya no compatibles con Python3 como Mechanize, Scrapemark.

Referencias :

  1. https://elitedatascience.com/python-web-scraping-libraries
  2. https://python.gotrained.com/python-web-scraping-libraries/
  3. http://blog.datahut.co/beginners-guide-to-web-scraping-with-python-lxml/

Publicación traducida automáticamente

Artículo escrito por rashi_garg 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 *