此处将为大家介绍关于在通过Python使用Selenium进行多处理时,Chrome在数小时后崩溃的详细内容,并且为您解答有关python语言通过的相关问题,此外,我们还将为您介绍关于centos7+
此处将为大家介绍关于在通过Python使用Selenium进行多处理时,Chrome在数小时后崩溃的详细内容,并且为您解答有关python语言通过的相关问题,此外,我们还将为您介绍关于centos7+python+selenium+chrome、Chrome浏览器通过Pythonselenium自动更新时如何使用特定版本的ChromeDriver、Cron无法通过Python找到selenium的Chromedriver的可执行路径、python selenium chrome 崩溃的有用信息。
本文目录一览:- 在通过Python使用Selenium进行多处理时,Chrome在数小时后崩溃(python语言通过)
- centos7+python+selenium+chrome
- Chrome浏览器通过Pythonselenium自动更新时如何使用特定版本的ChromeDriver
- Cron无法通过Python找到selenium的Chromedriver的可执行路径
- python selenium chrome 崩溃
在通过Python使用Selenium进行多处理时,Chrome在数小时后崩溃(python语言通过)
这是经过数小时的抓取后的错误回溯:
The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.
这是我设置的硒蟒蛇:
#scrape.pyfrom selenium.common.exceptions import *from selenium.webdriver.common.by import Byfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.chrome.options import Optionsdef run_scrape(link): chrome_options = Options() chrome_options.add_argument(''--no-sandbox'') chrome_options.add_argument("--headless") chrome_options.add_argument(''--disable-dev-shm-usage'') chrome_options.add_argument("--lang=en") chrome_options.add_argument("--start-maximized") chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"]) chrome_options.add_experimental_option(''useAutomationExtension'', False) chrome_options.add_argument("user-agent=Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36") chrome_options.binary_location = "/usr/bin/google-chrome" browser = webdriver.Chrome(executable_path=r''/usr/local/bin/chromedriver'', options=chrome_options) browser.get(<link passed here>) try: #scrape process except: #other stuffs browser.quit()#multiprocess.pyimport time,from multiprocessing import Poolfrom scrape import *if __name__ == ''__main__'': start_time = time.time() #links = list of links to be scraped pool = Pool(20) results = pool.map(run_scrape, links) pool.close() print("Total Time Processed: "+"--- %s seconds ---" % (time.time() - start_time))
Chrome,ChromeDriver安装程序,Selenium版本
ChromeDriver 79.0.3945.36 (3582db32b33893869b8c1339e8f4d9ed1816f143-refs/branch-heads/3945@{#614})Google Chrome 79.0.3945.79Selenium Version: 4.0.0a3
我想知道为什么Chrome正在关闭,但其他进程正在运行?
答案1
小编典典我获取了您的代码,对其进行了一些修改以适合我的 测试环境 ,这是执行结果:
代码块:
multiprocess.py :
import time
from multiprocessing import Pool
from multiprocessingPool.scrape import run_scrapeif name == ‘main’:
start_time = time.time()
links = [“https://selenium.dev/downloads/", “https://selenium.dev/documentation/en/"]
pool = Pool(2)
results = pool.map(run_scrape, links)
pool.close()
print(“Total Time Processed: “+”— %s seconds —” % (time.time() - start_time))scrape.py :
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException, TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Optionsdef run_scrape(link):
chrome_options = Options()
chrome_options.add_argument(‘–no-sandbox’)
chrome_options.add_argument(“–headless”)
chrome_options.add_argument(‘–disable-dev-shm-usage’)
chrome_options.add_argument(“–lang=en”)
chrome_options.add_argument(“–start-maximized”)
chrome_options.add_experimental_option(“excludeSwitches”, [“enable-automation”])
chrome_options.add_experimental_option(‘useAutomationExtension’, False)
chrome_options.add_argument(“user-agent=Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36”)
chrome_options.binary_location=r’C:\Program Files (x86)\Google\Chrome\Application\chrome.exe’
browser = webdriver.Chrome(executable_path=r’C:\Utility\BrowserDrivers\chromedriver.exe’, options=chrome_options)
browser.get(link)
try:
print(browser.title)
except (NoSuchElementException, TimeoutException):
print(“Error”)
browser.quit()
控制台输出:
Downloads
The Selenium Browser Automation Project :: Documentation for Selenium
Total Time Processed: — 10.248600006103516 seconds —
结论
很明显,您的程序在逻辑上是完美无缺的,而且非常完美。
这个用例
正如您提到的,在刮擦几个小时后出现了此错误,我怀疑这是由于WebDriver不是线程安全的。话虽如此,如果您可以序列化对底层驱动程序实例的访问,则可以在多个线程中共享一个引用。不建议这样做。但是您始终可以为每个线程实例化一个WebDriver实例。
理想情况下, 线程安全
问题不在您的代码中,而是在实际的浏览器绑定中。他们都假设一次只能有一个命令(例如,像真实用户一样)。但是另一方面,您始终可以为每个线程实例化一个
WebDriver 实例,这将启动多个浏览选项卡/窗口。到此为止,您的程序似乎是完美的。
现在,可以在同一 Webdriver 上运行不同的 线程
,但是测试结果将不是您期望的。背后的原因是,当您使用多线程在不同的选项卡/窗口上运行不同的测试时,需要一些线程安全编码,否则您将执行的操作将类似于或将转到当前具有的打开的选项卡/窗口。在
焦点* 不管的 线程 你希望运行。从本质上讲,这意味着所有测试将同时在具有 焦点 的同一选项卡/窗口上运行,而 不是
在预期的选项卡/窗口上运行。 __click()``send_keys()
__ *
centos7+python+selenium+chrome
1. 安装 chrome
yum install google-chrome
2. 安装 chromedriver
所有版本的下载地址:https://sites.google.com/a/chromium.org/chromedriver/downloads
wget https://chromedriver.storage.googleapis.com/2.39/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
3.selenium
pip install selenium
4. 例子
>>> from selenium import webdriver
>>> chrome_options = webdriver.ChromeOptions()
>>> chrome_options.add_argument(''--headless'')
>>> chrome_options.add_argument(''--no-sandbox'') # 这句一定要加
#我一开始没加,就一直报‘selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally’。搞了很久。
>>> driver = webdriver.Chrome(executable_path=''/root/chromedriver'', chrome_options=chrome_options)
>>> driver.get(''http://py2app.readthedocs.io/en/latest/examples.html'')
>>> print driver.title
Example setup.py templates — py2app 0.15 documentation
5. 注意
chromedriver 应该要给执行权限,也就是 chmod +x chromedriver,因为我为了解决 Chrome failed to start: exited abnormally 这个错误,做了很多尝试,也不知道这个是不是必须的,加了不会错
Chrome浏览器通过Pythonselenium自动更新时如何使用特定版本的ChromeDriver
我是Selenium的新手,现在可以将selenium与Chromedriver一起使用以进行基本的自动测试,代码可以正常工作,但问题是Chrome浏览器始终在后端自动更新,并且代码始终在Chrome更新后无法运行。我知道我需要下载新的chromedriver来解决此问题,但是我想知道是否有任何方法可以在不禁用chromebrowser更新的情况下解决此问题?tks。
我正在使用Windows 10 / Chrome版本67 / Python 3.6.4 / Selenium 3.12.0
答案1
小编典典否 ,除了更新 ChromeDriver 二进制版本外,没有其他选择,而 Chrome浏览器 会不断自动更新。
原因
在添加,修改和删除现有功能后,会释放每个 Chrome浏览器 。为了符合当前的 浏览器功能 集, Chrome团队 会不时发布兼容的
ChromeDriver 二进制文件。这些 ChromeDriver 二进制文件能够与 Chrome浏览器 进行交互。某些版本的
ChromeDriver 二进制文件支持特定范围的 Chrome浏览器 版本(某些是最新版本),如下所示:
ChromeDriver v 84.0.4147.30 (2020-05-28)
Supports Chrome version 84
ChromeDriver v 83.0.4103.39 (2020-05-05)
Supports Chrome version 83
ChromeDriver v 82 被 故意 跳过。
ChromeDriver v 81.0.4044.138 (2020-05-05)
Supports Chrome version 81
ChromeDriver v 80.0.3987.106 (2020-02-13)
Supports Chrome version 80
ChromeDriver v 79.0.3945.36 (2019-11-18)
Supports Chrome version 79
ChromeDriver v 78.0.3904.70 (2019-10-21)
Supports Chrome version 78
ChromeDriver v 77.0.3865.40 (2019-08-20)
Supports Chrome version 77
ChromeDriver v 76.0.3809.126 (2019-08-20)
Supports Chrome version 76
ChromeDriver v 75.0.3770.8 (2019-04-29)
Supports Chrome version 75
ChromeDriver v 74.0.3729.6 (2019-03-14)
Supports Chrome version 74
ChromeDriver v 73.0.3683.68 (2019-03-06)
Supports Chrome version 73
ChromeDriver v 2.46 (2019-02-01)
Supports Chrome v71-73
ChromeDriver v 2.45 (2018-12-10)
Supports Chrome v70-72
ChromeDriver v 2.44 (2018-11-19)
Supports Chrome v69-71
ChromeDriver v 2.43 (2018-10-16)
Supports Chrome v69-71
ChromeDriver v 2.42 (2018-09-13)
Supports Chrome v68-70
ChromeDriver v 2.41 (2018-07-27)
Supports Chrome v67-69
ChromeDriver v 2.40 (2018-06-07 )
Supports Chrome v66-68
ChromeDriver v 2.39 (2018-05-30)
Supports Chrome v66-68
ChromeDriver v 2.38 (2018-04-17 )
Supports Chrome v65-67
ChromeDriver v 2.37 (2018-03-16 )
Supports Chrome v64-66
ChromeDriver v 2.36 (2018-03-02 )
Supports Chrome v63-65
ChromeDriver v 2.35 (2018-01-10 )
Supports Chrome v62-64
ChromeDriver v 2.34 (2017-12-10 )
Supports Chrome v61-63
ChromeDriver v 2.33 (2017-10-03)
Supports Chrome v60-62
ChromeDriver v 2.32 (2017-08-30)
Supports Chrome v59-61
ChromeDriver v 2.31 (2017-07-21)
Supports Chrome v58-60
ChromeDriver v 2.30 (2017-06-07)
Supports Chrome v58-60
ChromeDriver v 2.29 (2017-04-04)
Supports Chrome v56-58
结论
要使脚本/程序与更新的 Chrome浏览器 保持交互,您必须根据 兼容性将ChromeDriver 二进制版本与 Chrome浏览器 保持同步。
Cron无法通过Python找到selenium的Chromedriver的可执行路径
如何解决Cron无法通过Python找到selenium的Chromedriver的可执行路径?
在 Spyder 中一切正常。我想在特定时间运行 Python 脚本,所以我使用了 crontab。我的编码是
SHELL=/bin/zsh
PATH=/usr/local/bin/:/usr/bin:/usr/sbin
46 01 * * * /Users/myusername/opt/anaconda3/bin/python /Users/myusername/Documents/Lynn\''s\ Python\ work/shopee/shopee_main.py >>/Users/myusername/Desktop/out.log
在我的 Python 中编写关于 Chromedriver 的代码是
options = webdriver.ChromeOptions()
options.add_argument(''--headless'')
browser = webdriver.Chrome(chrome_options=options,executable_path=os.getcwd()+''/chromedriver'')
我不熟悉 crontab 和 Linux,我一直在寻找大量信息,就是无法解决。请帮帮我? 感谢每一个帮助?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
python selenium chrome 崩溃
from selenium import webdriver
option = webdriver.ChromeOptions()
# 防止崩溃
option.add_argument("""--no-sandBox""")
# 谷歌文档提到需要加上这个属性来规避bug
option.add_argument("""--disable-gpu""")
wd = webdriver.Chrome(options=option)
关于在通过Python使用Selenium进行多处理时,Chrome在数小时后崩溃和python语言通过的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于centos7+python+selenium+chrome、Chrome浏览器通过Pythonselenium自动更新时如何使用特定版本的ChromeDriver、Cron无法通过Python找到selenium的Chromedriver的可执行路径、python selenium chrome 崩溃等相关内容,可以在本站寻找。
本文标签: