Parsing de planes web amb Selenium

, , , , ,

Selenium és una eina per a l'automatització de proves i la interacció amb pàgines web. Integrar Selenium a Django perme llegir les dades d'una pàgina web i utilitzar-les a la teva aplicació Django.

Pas 1: Instal·lar Selenium i el controlador del navegador: El primer pas és assegurar-te que tens Selenium instal·lat a la teva màquina. Pots instal·lar-lo fàcilment utilitzant l'eina de gestió de paquets de Python, pip. Executa la següent comanda per instal·lar Selenium:

pip install selenium

També cal descarregar el controlador del navegador que vulguis utilitzar amb Selenium. Per exemple, si vols utilitzar Firefox, hauràs de descarregar el controlador d'aquest navegador per a la plataforma correcta on s'executi.

https://www.browserstack.com/guide/geckodriver-selenium-python

Pas 2: Configurar la integració a Django: Cal afegir Selenium a la llista d'aplicacions instal·lades i configurar les opcions de Selenium al teu fitxer settings.py. Obre el fitxer settings.py i afegeix 'selenium' a la llista d'aplicacions instal·lades de Django:

settings.py
INSTALLED_APPS = [
    ...
    'selenium',
    ...
]

A continuació, configura les opcions de Selenium al fitxer settings.py afegint les següents línies:

settings.py
SELENIUM_DRIVER = 'selenium.webdriver.Geckodriver'
SELENIUM_DRIVER_ARGUMENTS = ['--headless']  # per executar Selenium en mode "headless" (sense interfície gràfica)

Pas 3: Codi per llegir les dades d'una pàgina web: Pots crear una nova vista o utilitzar una existent per aquest propòsit. A continuació, tens un exemple senzill de com llegir la temperatura etiquetada amb la classe 'temperature' d'una pàgina web:

from django.shortcuts import render
from selenium import webdriver
 
def temperature_view(request):
    driver = webdriver.Chrome()  # Crea una nova instància del controlador del navegador
    driver.get('https://www.example.com/temperature')  # URL de la pàgina web que mostra la temperatura
 
    temperature_element = driver.find_element_by_class_name('temperature')  # element que conté la temperatura
    temperature = temperature_element.text  # Obté el text amb la temperatura
 
    driver.quit()  # Tanca la finestra del navegador
 
    return render(request, 'temperature.html', {'temperature': temperature})