Cómo raspar la web con Playwright en Python

En este artículo, discutiremos sobre el marco de trabajo de Playwright, su función, las ventajas de Playwright y el raspado de una página web básica.

El dramaturgo es un marco para pruebas y automatización web. Es una herramienta de prueba web bastante nueva de Microsoft presentada para permitir a los usuarios automatizar páginas web de manera más eficiente con menos requisitos iniciales en comparación con la herramienta Selenium ya existente. Aunque Playwright es significativamente mejor que Selenium en términos de velocidad, usabilidad y confiabilidad, permite probar Chromium, Firefox y WebKit con una sola API. El dramaturgo está diseñado para permitir la automatización web entre navegadores que es confiable y rápida.

Características del dramaturgo

  • Ejecución sin cabeza.
  • Espera automática de elementos.
  • Interceptar la actividad de la red.
  • Emular dispositivos móviles, geolocalización y permisos.
  • Compatibilidad con componentes web a través de selectores de perforación de sombras.
  • Capture videos, capturas de pantalla y archivos HAR.
  • Los contextos permiten sesiones aisladas.
  • Ejecución paralela.

Ventajas del dramaturgo

  • Ejecutable multinavegador
  • Código completamente abierto
  • documentación del pozo
  • Ejecuta pruebas en paralelo
  • Pruebas de API
  • Aislamiento de contexto
  • Compatibilidad con Python

Creación de un entorno virtual de Python

Siempre es recomendable trabajar en un entorno virtual separado específicamente si está utilizando una biblioteca en particular. Aquí, estamos creando un entorno virtual «venv» y activándolo.

Creando entorno virtual

virtualenv venv

activarlo

venv/Scripts/activate

Instalación y configuración de Playwright:

pip install playwright
playwright install

Automatización y extracción de datos de una página web

Después de instalar la biblioteca Playwright, ahora es el momento de escribir código para automatizar una página web. Para este artículo, utilizaremos quotes.toscrape.com.

Paso 1: Importaremos algunos paquetes necesarios y configuraremos la función principal.

Python3

from playwright.sync_api import sync_playwright
  
def main():
    pass
  
if __name__ == '__main__':
    main()

Paso 2: Ahora escribiremos nuestros códigos en la función ‘principal’. Este código abrirá la página web anterior, esperará 10000 milisegundos y luego cerrará la página web.

Python3

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    page.goto('https://quotes.toscrape.com/')
    page.wait_for_timeout(10000)
    browser.close()

 

Paso 3: Esto seleccionará todas las casillas con la clase ‘autor’ con bucle for , e iteraremos a través de cada elemento y extraeremos la cita y su nombre de autor. Siempre se recomienda usar un diccionario de Python para almacenar diferentes campos de datos con pares de clave y valor. Después de eso, estamos imprimiendo el diccionario en la terminal.

Python3

all_quotes = page.query_selector_all('.quote')
for quote in all_quotes:
    quote = quote.query_selector('.text').inner_text()
    author = quote.query_selector('.author').inner_text()
    print({'Author': author, 'Quote': quote})
page.wait_for_timeout(10000)
browser.close()

Implementación de código 

Código completo para raspar citas y sus autores:

Python3

from playwright.sync_api import sync_playwright
  
def main():
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=False)
        page = browser.new_page()
        page.goto('https://quotes.toscrape.com/')
        all_quotes = page.query_selector_all('.quote')
          
        for quote in all_quotes:
            quote = quote.query_selector('.text').inner_text()
            author = quote.query_selector('.author').inner_text()
            print({'Author': author, 'Quote': quote})
              
        page.wait_for_timeout(10000)
        browser.close()
  
  
if __name__ == '__main__':
    main()

Producción : 

 

Publicación traducida automáticamente

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