versiones guia espaƱol descargar actualizar python authentication web-scraping

python - guia - qgis manual



Python-Manipula y lee el navegador desde el navegador actual (1)

Estoy luchando por encontrar un método en python que te permita leer datos en un navegador web actualmente usado. Efectivamente, estoy tratando de descargar un marco de datos masivo de datos en una página web de la compañía controlada localmente y ponerlo en práctica en un marco de datos. El problema es que el sitio web tiene un proceso de autenticación de token bastante complejo que no he podido eludir el uso de Selenium usando una gran cantidad de controladores web, Requests, urllib y cookielib usando una variedad de parámetros de usuario. Me he rendido por completo en este frente, ya que estoy casi seguro de que el proceso de autenticación es mucho más de lo que se puede lograr fácilmente con estas bibliotecas.

Sin embargo, logré pasar por alto el proceso de tokenización requerido cuando probé rápidamente la apertura de una nueva pestaña en un navegador actual que ya había iniciado sesión usando WebBrowser . Clásicamente, WebBrowser no ofrece una función de lectura, lo que significa que, aunque la página se puede abrir, los datos de la página no se pueden leer en un marco de datos de pandas. Esto me hizo pensar que podía usar Win32com, abrir un navegador, iniciar sesión y luego ejecutar el resto del script, pero una vez más, no hay una capacidad de lectura general para el explorador de Internet, lo que significa que no puedo enviar la información que quiero a los pandas . Estoy perplejo. ¿Algunas ideas?

Podría adquirir las secuencias de comandos de token de autenticación necesarias, pero estoy seguro de que tomaría una semana o dos antes de que ocurriera algo en ese frente. Obviamente, preferiría obtener algo mientras espero los scripts de autenticación de la empresa.

Actualización: recibí tokens de autenticación de la compañía, sin embargo, requiere el uso de un paquete python en otro servidor al que no tengo acceso, sobre todo porque es una rareza que esté usando Python en mi departamento. Por lo tanto, lo anterior aún se aplica, necesita un método para leer y manipular un navegador abierto.


Paso a paso

1) Inicie el navegador con Selenium.

2) La secuencia de comandos debería comenzar a esperar cierto elemento que le informe que obtuvo la página requerida y que inició sesión.

3) Puede usar esta nueva ventana del navegador para iniciar sesión en la página manualmente.

4) El script detecta que estás en la página requerida y que has iniciado sesión.

5) Procesar secuencias de comandos de la forma que desee.

from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # start webdriver (opens Chrome in new window) chrome = webdriver.Chrome() # initialize waiter with maximum 300 seconds to wait. waiter = WebDriverWait(chrome , 300) # Will wait for appear of #logout element. # I assume it shows that you are logged in. wait.until(EC.presence_of_element_located(By.ID, "logout")) # Extract data etc.

Puede ser más fácil si usas el perfil de tu usuario de Chrome. De esta manera, es posible que la sesión anterior continúe, por lo que no necesitará realizar ninguna acción de inicio de sesión.

options = webdriver.ChromeOptions() options.add_argument("user-data-dir=FULL_PATH__TO_PROFILE") chrome = webdriver.Chrome(chrome_options=options) chrome.get("https://your_page_here")