[Rastreador de Python • selenium] Preguntas frecuentes sobre la nueva versión de selenium4 obteniendo automáticamente el controlador


prefacio

Con respecto al último artículo publicado "[Python Crawler • selenium] guía de usuario de la nueva versión de selenium4", muchas personas informaron que el controlador obtenido automáticamente causaría un bloqueo. Este artículo brinda una configuración detallada.

En primer lugar, permítanme hablar sobre el problema del flash back. Instalé selenium en una versión baja de python y descubrí que se instaló la versión anterior, no la versión de selenium 4, por lo que el uso seguía siendo selenium 3. En este momento, usar el código de selenium 4 que proporcioné antes inevitablemente generará un error, por lo que en este artículo, se proporcionarán los códigos de las versiones selenium3 y selenium4 de varios controladores para que todos puedan cv directamente.

En segundo lugar, este artículo permitirá que todos aprendan a solucionar problemas. La causa del retroceso del selenio es en realidad muy fácil de solucionar. En términos generales, habrá un aviso cuando se informe un error durante la operación. Estas cosas se explicarán en el texto.


1. Instale el controlador

Configuración del entorno actual, python=3.10,

Tenga en cuenta que asegúrese de que su versión de Python sea una versión alta, la versión baja instalará automáticamente Selenium3 y la versión alta instalará automáticamente Selenium4, si no sabe qué versión de Selenium tiene instalada, le sugiero que use el comando para verifique el python3 que pip listuso

.10 instalado Selenium, que es la versión 4.7 por defecto.

pip install webdriver-manager

Luego instale selenio

pip install selenium

2. Usar pasos

Esta vez tomo Edge como ejemplo, porque solo tengo Edge inactivo en este momento.

1. Paquete de importación

el código se muestra a continuación:

from selenium import webdriver
from selenium.webdriver.edge.service import Service as EdgeService
from webdriver_manager.microsoft import EdgeChromiumDriverManager

2. Generar controlador

el código se muestra a continuación:

driver = webdriver.Edge(service=EdgeService(EdgeChromiumDriverManager().install()))

3. Abre el sitio web

Aquí tomo abrir mi blog como ejemplo, preste atención a la demora aquí, de lo contrario se bloqueará.

driver.get('https://blog.csdn.net/weixin_47754149?spm=1010.2135.3001.5343')
sleep(10000)

El diagrama de efecto de ejecución es el siguiente

Se apagará automáticamente después de funcionar durante 10 segundos, lo que indica que, de hecho, no hay ningún problema.

2. Manejo del problema de flashback de selenio

En circunstancias normales, el flashback de selenium es causado por dos problemas. Uno es que selenium no es compatible con su versión de código, o su código es incorrecto, y el otro es que el navegador desaparece después de un flash. Este no es su código. Incorrecto, pero el código se ejecuta cuando se abre el navegador. Sólo tienes que hacer un poco de retraso. Por lo tanto, aquí se trata el primer caso.

1. La versión de selenio no coincide con el código

Esta parte es la más propensa a encontrar errores. En términos generales, cuando instala selenium, reconocerá automáticamente su versión de python e instalará la versión correspondiente. Por ejemplo, si usa python3.6, selenium3 se instalará de manera predeterminada. Si usa python3.10, selenium4 se instalará automáticamente. , por lo que es muy importante determinar qué versión de selenium tienes instalada.

En primer lugar, para confirmar su versión de selenio, use el siguiente comando

pip list

Luego, generará el paquete y el número de versión en su entorno actual.
Debe encontrar su selenio, verificar qué versión es

, y luego, de acuerdo con su número de versión correspondiente, debe escribir el código de selenium3 o selenium4, para que no chocar

2. Excepción del código de Selenium

Esta parte del problema de flashback básicamente muestra que la base de su código no es lo suficientemente sólida. Este tipo de problema es un error gramatical, porque Python se ejecuta mientras se explica, se ejecutará el código correcto y el código incorrecto no se ejecutará después de eso. , y algunos no. Los campos y las propiedades de no se marcarán durante el desarrollo, por lo que es difícil verlo para los novatos.

Mi sugerencia para este tipo de problema es usar IDE para el desarrollo, recomiendo usar el código de Visual Studio, luego instalar el complemento de python y seleccionar su versión de python en la barra de estado


En este punto, el código tendrá una pista, si hay un problema con el código que escribiste, se mostrará aquí.

Si tiene algo de experiencia en desarrollo, solo agregue el manejo de excepciones directamente, por lo que no entraré en detalles.

3. Ejemplo de código

El código aquí es exclusivamente para cv, lo que te hace sentir más cómodo y directo cuando estás en cv.

1. ejemplo de código selenium4

1. cromo

# selenium 4
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))

2. cromo

# selenium 4
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromiumService
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.core.utils import ChromeType

driver = webdriver.Chrome(service=ChromiumService(ChromeDriverManager(chrome_type=ChromeType.CHROMIUM).install()))

3. valiente

# selenium 4
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as BraveService
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.core.utils import ChromeType

driver = webdriver.Chrome(service=BraveService(ChromeDriverManager(chrome_type=ChromeType.BRAVE).install()))

4.Firefox

# selenium 4
from selenium import webdriver
from selenium.webdriver.firefox.service import Service as FirefoxService
from webdriver_manager.firefox import GeckoDriverManager

driver = webdriver.Firefox(service=FirefoxService(GeckoDriverManager().install()))

5. ES

# selenium 4
from selenium import webdriver
from selenium.webdriver.ie.service import Service as IEService
from webdriver_manager.microsoft import IEDriverManager

driver = webdriver.Ie(service=IEService(IEDriverManager().install()))

6. Borde

# selenium 4
from selenium import webdriver
from selenium.webdriver.edge.service import Service as EdgeService
from webdriver_manager.microsoft import EdgeChromiumDriverManager

driver = webdriver.Edge(service=EdgeService(EdgeChromiumDriverManager().install()))

7. Ópera

# selenium 3 & 4
from selenium import webdriver
from webdriver_manager.opera import OperaDriverManager

driver = webdriver.Opera(executable_path=OperaDriverManager().install())

2. Ejemplo de código de Selenium3

1. cromo

# selenium 3
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().install())

2. cromo

# selenium 3
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.core.utils import ChromeType

driver = webdriver.Chrome(ChromeDriverManager(chrome_type=ChromeType.CHROMIUM).install())

3. valiente

# selenium 3
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.core.utils import ChromeType

driver = webdriver.Chrome(ChromeDriverManager(chrome_type=ChromeType.BRAVE).install())

4.Firefox

# selenium 3
from selenium import webdriver
from webdriver_manager.firefox import GeckoDriverManager

driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())

5. ES

# selenium 3
from selenium import webdriver
from webdriver_manager.microsoft import IEDriverManager

driver = webdriver.Ie(IEDriverManager().install())

6. Borde

# selenium 3
from selenium import webdriver
from webdriver_manager.microsoft import EdgeChromiumDriverManager

driver = webdriver.Edge(EdgeChromiumDriverManager().install())

7. Ópera

# selenium 3 & 4
from selenium import webdriver
from webdriver_manager.opera import OperaDriverManager

driver = webdriver.Opera(executable_path=OperaDriverManager().install())

3. Marco operativo proporcionado

import os

import requests
from requests import Response

from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.core.download_manager import WDMDownloadManager
from webdriver_manager.core.http import HttpClient
from webdriver_manager.core.logger import log

class CustomHttpClient(HttpClient):

    def get(self, url, params=None, **kwargs) -> Response:
        """
        在这里添加你的操作,session,代理等
        """
        log("这些将会被自定义的http客户端调用")
        return requests.get(url, params, **kwargs)


def test_can_get_chrome_driver_with_custom_http_client():
    http_client = CustomHttpClient()
    download_manager = WDMDownloadManager(http_client)
    path = ChromeDriverManager(download_manager=download_manager).install()
    assert os.path.exists(path)

Resumir

Lo anterior es todo el contenido de este artículo, principalmente para tratar los problemas que encuentras al usar el controlador de adquisición automática.Aunque el resumen del problema no es muy completo, ha tocado los aspectos fundamentales, es decir, las versiones de selenium y python deben ser Match para instalar selenium4. La segunda es publicar algunos códigos de selenio para que todos puedan hacer cv directamente, creo que esto es muy útil, cuando leas este artículo y descubras que puedes cv directamente, debe ser muy cómodo, yo también lo creo.
Si
ha encontrado un problema y no es el problema mencionado anteriormente, envíeme un mensaje privado directamente.

Supongo que te gusta

Origin blog.csdn.net/weixin_47754149/article/details/128502965
Recomendado
Clasificación