selenium爬虫与配置谷歌浏览器的driver问题

用selenium爬虫时,明明已经安装了selenium模块,程序却运行不了。在使用selenium之前必须先配置浏览器对应版本的webdriver

本文主要涉及驱动有问题driver

在这里插入图片描述

在这里插入图片描述

  网上有很多手动的方法(查看谷歌浏览的版本然后在其他博主分享的webdriver中下载与自己谷歌版本号最贴近的版本号,并把webdriver的地址放在与自己pycharm的同一个文件夹下)

这里分享一个用代码的解决方法(在python官网中的相应模块中,这里直接分享代码)

1、打开pycharm新建一个py文件,在终端(Terminal)安装webdriver-manager

如何打开pycharm的终端:打开pycharm最下方找到Terminal打开就可以输入代码安装模块

执行代码为pip install webdriver-manager回车安装

在这里插入图片描述

2、在这个py文件中输入下面这几行代码并运行
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()))

操作完成后,输入下面代码看能否运行成功

from selenium.webdriver import Chrome

# 1、创建浏览器对象(生活中已经打开了浏览器)
b = Chrome()

# 2、用浏览器打开指定网页(输入网址)
b.get(' https://movie.douban.com/top250')

# 3、获取打开的网页的网页源代码
print(b.page_source)

最后如果还不成功,可能是谷歌浏览器版本太低了或者是谷歌浏览器配置不对(盗版),建议在电脑上彻底删除谷歌浏览器!

谷歌浏览器下载地址:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要实现异步的功能实时检测Selenium谷歌浏览器是否有弹出登录窗口,可以使用Python的`asyncio`库和`aiohttp`库来实现。以下是一种可能的实现方式: ```python import asyncio from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 异步函数,用于检测是否有登录窗口弹出 async def check_login_popup(driver): while True: try: # 检测登录窗口是否存在 login_popup = await driver.wait.until(EC.presence_of_element_located((By.ID, 'login-popup'))) # 如果存在,则阻塞主线程,等待异步操作关闭登录窗口 await asyncio.sleep(0.1) except Exception: pass # 主线程任务函数 async def main(): # 设置Chrome浏览器的选项 chrome_options = Options() chrome_options.add_argument('--headless') # 无界面模式 chrome_options.add_argument('--no-sandbox') # 创建Chrome浏览器对象 driver = webdriver.Chrome(options=chrome_options) driver.wait = WebDriverWait(driver, 10) # 设置等待时间 # 在异步循环中执行异步任务 async with driver: await asyncio.gather( check_login_popup(driver), # 异步检测登录窗口的任务 # 其他主线任务... ) # 运行主线程任务 asyncio.run(main()) ``` 上述代码中,`check_login_popup`是一个异步函数,用于检测是否有登录窗口弹出。在主线程任务函数`main`中,使用`asyncio.gather()`同时运行检测登录窗口的任务和其他主线任务。当检测到登录窗口弹出时,主线程会被阻塞,等待异步操作去关闭登录窗口。 请注意,上述代码仅为示例,实际应用中可能需要根据具体情况进行适当的修改和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值