WebDriverException: Message: unknown error: Chrome failed to start: crashed

第一种:如果出现下面情况:

  • chrome浏览器有,并且版本也和chromedriver的契合
  • 最近卸载过chrome浏览器,并且重新装过了
  • 无论怎么看,都是正常的

如果有以上情况可能存在版本冲突,两个版本的chrome(我之前就出现过),或者版本不对应,一直出现 Chrome failed to start: crashed

解决方案

删除:c:\Users(自己的用户名)\AppData\Local\Google\Chrome\

有界面形式:

import time
from selenium import webdriver
path=r'D:\Anaconda_home\Anaconda3\envs\tensorflow_gpu\Scripts\chromedriver.exe'
browser = webdriver.Chrome(executable_path=path)#说明chromedriver.exe的地址
browser.set_window_size(1920, 1080)
browser.get('https://www.baidu.com/')
browser.get('https://www.taobao.com/')
browser.get('https://www.python.org/')
browser.back()
time.sleep(1)
browser.forward()
browser.close()

第二种:采用以下:

1. 背景
在使用selenium + chrome浏览器渲染模式爬取数据时,如果并发任务过多,或者爬虫的运行时间很长,那么很容易出现浏览器崩溃的现象,如下:

这一般是资源消耗过大造成的(据说chrome浏览器有内存泄漏的情况)。那如何解决这个问题呢?

这种情况下,我们首先就会想到使用无界面的浏览器PhantomJS,但是PhantomJS现在年久失修,后继无人,对很多新的特性支持并不够好。不过好在Google今年在chrome中增加了一项新的特性: Headless mode ,这样我们就可以使用无界面的chrome来爬取数据了,占用资源更少,速度更快。而且可喜的是,google的团队承诺会一直维护它…

2. 环境
系统:win10
python 3.6.5
IDE:jupyter notebook
安装过chrome浏览器( 75.0.3770.100(正式版本) 64 位)
selenium 3.7.0
配置好ChromeDriver v2.46

注意:

因为Headless mode 是新推出的特性,只有高级的版本才能使用,并不向前兼容,所以对chrome浏览器和chromedriver的版本有要求:
1. 对chrome浏览器来说:
linux,unix系统需要 chrome浏览器 >= 59
Windows系统需要 chrome浏览器 >= 60
2. chromeDriver版本与chrome浏览器匹配:
这个部分参考文章:https://www.cnblogs.com/gaofighting/p/10757013.html;最新下载:http://npm.taobao.org/mirrors/chromedriver/

无界面后台静默运行代码

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
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys chrome_options = webdriver.ChromeOptions()
# 使用headless无界面浏览器模式
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu') # 启动浏览器,获取网页源代码
browser = webdriver.Chrome(options=chrome_options)
mainUrl = "https://www.taobao.com/"
browser.get(mainUrl)
print(f"browser text = {browser.page_source}")
browser.get_screenshot_as_file("test.png")#获取截图
browser.quit()

chrome浏览器爬虫WebDriverException解决采用python + selenium + chrome + headless模式的更多相关文章

  1. Docker环境下运行python+selenium+chrome

    Docker环境下运行python+selenium+chrome docker运行时占用的资源非常少,而且能将环境进行有效的隔离,可以快速的进行部署,因此可以将docker与selenium结合实现 ...

  2. python+selenium+Chrome options参数

    python+selenium+Chrome options参数 Chrome Options常用的行为一般有以下几种: 禁止图片和视频的加载:提升网页加载速度. 添加代理:用于翻墙访问某些页面,或者 ...

  3. Python + Selenium +Chrome 批量下载网页代码修改【新手必学】

    Python + Selenium +Chrome 批量下载网页代码修改主要修改以下代码可以调用 本地的 user-agent.txt 和 cookie.txt来达到在登陆状态下 批量打开并下载网页, ...

  4. Python selenium chrome 环境配置

    Python selenium chrome 环境配置 一.参考文章: 1. 记录一下python easy_install和pip安装地址和方法 http://heipark.iteye.com/b ...

  5. Python selenium chrome打包exe后禁用控制台输出滚动日志

    Python selenium chrome打包exe后,在运行的过程中,如果遇到需要input()输入时,会发现被不断滚动刷新的日志把命令行输入快速顶掉了,通过查阅资料不断实践,发现以下方法有效: ...

  6. selenium初探:WebDriverException解决方法探索(以Chrome浏览器|IE浏览器|Edge浏览器为例)

    环境参考:win10-64位, python3.6.3, selenium3.7 在初试selenium运行以下代码时 from selenium import webdriver browser = ...

  7. Python+Selenium+Chrome 的一个案例

    第一步,下载chromeDrive:http://npm.taobao.org/mirrors/chromedriver(我下载的是2.43版本的chromedriver_win32.zip) 下载之 ...

  8. 开源you-get项目爬虫,以及基于python+selenium的自动测试利器

    写在前面 爬虫和自动测试,对于python来说是最合适不过也是最擅长的. 开源的项目也很多,例如you-get项目https://github.com/soimort/you-get.盗链和爬虫神器. ...

  9. 在Centos7上安装Python+Selenium+Chrome+Chromedriver

    1.下载Chrome 上一篇文章已经演示过了Python+Selenium+Firefox+Geckodriver安装步骤并通过自动化脚本打开百度 因此当前只需要安装Chrome和Chromedriv ...

随机推荐

  1. orcle_day02

    第三章:单值函数 函数分为: 1.单值函数 1.字符函数 2.日期函数 3.转换函数 4.数字函数 2.分组函数(后面的章节再做学习) 哑表dual dual是一个虚拟表,用来构成select的语法规 ...

  2. 从FBV到CBV二(认证器)

    span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; }.CodeMirror ...

  3. linux命令详解——sort

    [原文链接]:http://www.cnblogs.com/51linux/archive/2012/05/23/2515299.html 1 sort的工作原理 sort将文件的每一行作为一个单位, ...

  4. linux上如何安装git

    安装依赖软件 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc yum instal ...

  5. yum 报错3

    . Contact the upstream for the repository and get them to fix the problem. . Reconfigure the baseurl ...

  6. zzu edu

    https://jw.v.zzu.edu.cn/eams/login.action 查询密码: 身份证后六位

  7. 【bzoj 4318】OSU!

    题意 一个长度为 $n$ 的字符串,第 $i$ 位有 $p_i$ 的概率是 $1$,否则是 $0$.一个字符串的分数定义为:对于字符串中每一个极长的连续一段 $1$,设这段 $1$ 的长度为 $x$, ...

  8. Java 基础知识点滴(1)

    1. ==与equals的区别 ==是用来判断两个变量的值是否相等.要比较两个基本变量或引用变量是否相等,只能用==: equal用来判断两个独立对象里面的内容是否一样. 例子: String s1 ...

  9. 在Spring MVC 中配置自定义的类型转换器

    方法一: 实现spring mvc 自带的 Formatter 接口 1.创建一个类来实现Formatter接口 import org.springframework.format.Formatter ...

  10. let 命令

    let命令取代并扩展了expr命令的整数算数符号. let除了支持5中基础的运算符. 还支持+=,-=,*=,.-,%= 自变运算符. 以及**幂次运算符. 在变量计算中不需要加上$来表示变量. [c ...