Mi información de contacto
Correo[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Tabla de contenido
Obtener cookies a través de la interfaz
Habilitar el inicio de sesión para omitir el navegador
El uso del inicio de sesión puede reducir las operaciones repetidas de cada inicio de sesión, operar directamente la página del menú después del inicio de sesión y también puede reducir el inicio de sesión de verificación de seguridad, como las operaciones de inicio de sesión de verificación de imagen. Nota: Las cookies y los tokens tienen fechas de vencimiento.
Obtenga cookies directamente desde las herramientas del desarrollador y agréguelas. La siguiente imagen muestra las cookies de varios sitios en la página web. Simplemente seleccione las que necesita y agréguelas.
- from selenium import webdriver
- from selenium.webdriver.edge.options import Options
-
- # 一般只需要name和value
- cookie = {'name': 'ZY44', 'value': 'tLonhTkz50iHzxjhIsaaaafferr:C'}
-
- options = Options()
- # options.add_argument('--headless')
- wd = webdriver.Edge(options=options)
-
- wd.add_cookie(cookie_dict=cookie)
-
- #for c in cookies: # 如果是多个cookie要添加,cookies存储为列表是,使用循环添加
- # wd.add_cookie(c)
-
- wd.refresh() # 刷新页面
-
- wd.get(URL)
-
- wd.quit()
generar excepción_class(mensaje, pantalla, seguimiento de pila)
selenium.common.exceptions.InvalidCookieDomainException: Mensaje: dominio de cookie no válido
(Información de la sesión: MicrosoftEdge=126.0.2592.87)
Si recibe el error anterior, puede agregar una línea de wd.get(URL) antes de wd.add_cookie(cookie_dict=cookie), de la siguiente manera:
- wd.get(URL)
- wd.add_cookie(cookie_dict=cookie)
- wd.get(URL)
Después de obtener datos de cookies a través de la interfaz, agregue el uso de cookies en Selenium
- def get_cookies():
- headers = {
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36',
- }
- host = 'https://baike.baidu.com'
- req = requests.get(host, headers=headers)
- cookie_data = req.cookies.get_dict()
- cookies = []
- for key, value in cookie_data.items():
- cookies.append(dict(name=key, value=value))
- return cookies
Ingrese en Google o en el navegador Edge:chrome://version/ 或 edge://version/ 查看配置文件夹路径,
Elimine el valor predeterminado al final y luego agregue ––user-data-dir= antes de la ruta para unir la ruta que queremos.
profile_directory = r'--user-data-dir=C:UsersxxxAppDataLocalMicrosoftEdgeUser Data'
- # 这里使用模糊匹配,把edge开头的进程都杀掉
- if platform.system() == "Windows":
- os.system("taskkill -im msedge* -f")
- else:
- os.system("killall -9 msedge*")
-
- user_data = r'C:UsersxxxAppDataLocalMicrosoftEdgeUser Data'
- profile_directory = rf'--user-data-dir={user_data}'
-
- options = Options()
- # options.add_argument('--headless')
- options.add_argument(profile_directory)
- wd = webdriver.Edge(options=options)
-
- wd.maximize_window()
- wd.get(URL)
-
- wd.quit()
Nota: Al utilizar este método, debe cerrar el programa del navegador correspondiente; de lo contrario, se informará un error, por lo que debe finalizar el proceso del navegador correspondiente antes de la ejecución. El código anterior utiliza una consulta de coincidencia difusa para finalizar el proceso, y el siguiente es una coincidencia completa.
- returnCode=os.system('taskkill /F /iM chrome.exe') # 谷歌
- returnCode=os.system('taskkill /F /iM iexplore.exe') # IE
- returnCode=os.system('taskkill /F /iM firefox.exe') # 火狐
- returnCode=os.system('taskkill /F /iM msedge.exe') # edge
- assert returnCode==0 #判断浏览器进程是否杀完
- token = "my_token"
-
- options = Options()
- options.add_argument('--headless')
- wd = webdriver.Edge(options=options)
-
- wd.execute_script("window.localStorage.setItem('token', '%s');" % token) # 使用selenium执行js的操作添加token
-
- wd.maximize_window()
- wd.get(url)
- wd.quit()