chrome浏览器爬虫WebDriverException解决采用python + selenium + chrome + headless模式
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模式的更多相关文章
- Docker环境下运行python+selenium+chrome
Docker环境下运行python+selenium+chrome docker运行时占用的资源非常少,而且能将环境进行有效的隔离,可以快速的进行部署,因此可以将docker与selenium结合实现 ...
- python+selenium+Chrome options参数
python+selenium+Chrome options参数 Chrome Options常用的行为一般有以下几种: 禁止图片和视频的加载:提升网页加载速度. 添加代理:用于翻墙访问某些页面,或者 ...
- Python + Selenium +Chrome 批量下载网页代码修改【新手必学】
Python + Selenium +Chrome 批量下载网页代码修改主要修改以下代码可以调用 本地的 user-agent.txt 和 cookie.txt来达到在登陆状态下 批量打开并下载网页, ...
- Python selenium chrome 环境配置
Python selenium chrome 环境配置 一.参考文章: 1. 记录一下python easy_install和pip安装地址和方法 http://heipark.iteye.com/b ...
- Python selenium chrome打包exe后禁用控制台输出滚动日志
Python selenium chrome打包exe后,在运行的过程中,如果遇到需要input()输入时,会发现被不断滚动刷新的日志把命令行输入快速顶掉了,通过查阅资料不断实践,发现以下方法有效: ...
- selenium初探:WebDriverException解决方法探索(以Chrome浏览器|IE浏览器|Edge浏览器为例)
环境参考:win10-64位, python3.6.3, selenium3.7 在初试selenium运行以下代码时 from selenium import webdriver browser = ...
- Python+Selenium+Chrome 的一个案例
第一步,下载chromeDrive:http://npm.taobao.org/mirrors/chromedriver(我下载的是2.43版本的chromedriver_win32.zip) 下载之 ...
- 开源you-get项目爬虫,以及基于python+selenium的自动测试利器
写在前面 爬虫和自动测试,对于python来说是最合适不过也是最擅长的. 开源的项目也很多,例如you-get项目https://github.com/soimort/you-get.盗链和爬虫神器. ...
- 在Centos7上安装Python+Selenium+Chrome+Chromedriver
1.下载Chrome 上一篇文章已经演示过了Python+Selenium+Firefox+Geckodriver安装步骤并通过自动化脚本打开百度 因此当前只需要安装Chrome和Chromedriv ...
随机推荐
- mysql 5.5.36 通用二进制安装部署
1.创建mysql用户 # useradd -r mysql 2.解压二进制包到指定目录下 # tar xf mysql-5.5.36-linux2.6-x86_64.tar.gz -C /usr/l ...
- Practical Lessons from Predicting Clicks on Ads at Facebook (2014)论文阅读
文章链接: https://quinonero.net/Publications/predicting-clicks-facebook.pdf abstract Facebook日活跃度7.5亿,活跃 ...
- 去掉或修改lightinthebox网址与标题中Wholesale关键词
includes\languages\english.php define('SEO_COMMON_KEYWORDS','Wholesale'); 将里面的Wholesale换成你想显示的词即可.
- JAVA项目中的常用的异常处理情况总结
可能遇见的异常或错误: 检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的.例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略. 运行时异常: ...
- 递归型SPFA+二分答案 || 负环 || BZOJ 4773
题解: 基本思路是二分答案,每次用Dfs型SPFA验证该答案是否合法. 一点细节我注释在代码里了. 代码: #include<cstdio> #include<cstring> ...
- 在哪里查看java的jar包版本?
jar包根目录里的META-INF目录下的MANIFEST.MF文件里一般有会记录版本信息,可以到这个文件里查看 .
- qt5-QPushButton按钮
Win::Win(QWidget *parent) //构造函数体 : QWidget(parent) //执行父类初始化操作 { //创建按钮方式一 ,);//重置窗口大小 this->set ...
- eclipse切换 package explorer
- BZOJ 1095: [ZJOI2007]Hide 捉迷藏 动态点分治+堆
写了7k多,可以说是一己之力切掉了这道毒瘤题~ 开 $3$ 种堆,分别维护每个子树最大深度,以及每个节点在点分树中对父亲的贡献,和全局的最优解. 由于需要支持堆的删除,所以写起来特别恶心+麻烦. 细节 ...
- sh_07_元组遍历
sh_07_元组遍历 info_tuple = ("zhangsan", 18, 1.75) # 使用迭代遍历元组 for my_info in info_tuple: # 使用格 ...