Java 使用selenium的web爬虫中出现异常

Java 使用selenium的web爬虫中出现异常,java,selenium,Java,Selenium,我正在学习网页爬行,并尝试运行一个简单的程序来打印页面标题。但是我得到了一个org.openqa.selenium.WebDriverException 我曾尝试将chromedriver.exe文件放在C驱动器中,并在程序中包括options.addArguments(“--no sandbox”),但没有任何效果。我已经重新安装了chrome,并将其放在C:\Users\HP\AppData\Local\Google\chrome\Application\chrome.exe文件夹中,但这也

我正在学习网页爬行,并尝试运行一个简单的程序来打印页面标题。但是我得到了一个
org.openqa.selenium.WebDriverException

我曾尝试将
chromedriver.exe
文件放在
C
驱动器中,并在程序中包括
options.addArguments(“--no sandbox”)
,但没有任何效果。我已经重新安装了chrome,并将其放在C:\Users\HP\AppData\Local\Google\chrome\Application\chrome.exe文件夹中,但这也不起作用。 首先是在C:\ProgramFiles(x86)\Google\Chrome\Application文件夹中。 从该位置打开chrome时,显示“应用程序无法正确启动(0xc0000022)。单击“确定”关闭应用程序”

我在eclipse窗口中遇到以下错误:

Starting ChromeDriver 2.46.628402 (536cd7adbad73a3783fdc2cab92ab2ba7ec361e1) on port 1497
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: crashed
  (unknown error: DevToolsActivePort file doesn't exist)
  (The process started from chrome location C:\Users\HP\AppData\Local\Google\Chrome\Application\chrome.exe is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
  (Driver info: chromedriver=2.46.628402 (536cd7adbad73a3783fdc2cab92ab2ba7ec361e1),platform=Windows NT 10.0.17134 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 240 milliseconds
Build info: version: '3.8.1', revision: '6e95a6684b', time: '2017-12-01T18:33:54.468Z'
System info: host: 'LAPTOP-17CRM6HV', ip: '192.168.43.48', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_191'
Driver info: driver.version: ChromeDriver
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
    at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$new$0(JsonWireProtocolResponse.java:53)
    at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$getResponseFunction$2(JsonWireProtocolResponse.java:91)
    at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:123)
    at java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
    at java.util.Spliterators$ArraySpliterator.tryAdvance(Unknown Source)
    at java.util.stream.ReferencePipeline.forEachWithCancel(Unknown Source)
    at java.util.stream.AbstractPipeline.copyIntoWithCancel(Unknown Source)
    at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
    at java.util.stream.FindOps$FindOp.evaluateSequential(Unknown Source)
    at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
    at java.util.stream.ReferencePipeline.findFirst(Unknown Source)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:126)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:142)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:219)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:142)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:181)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:168)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:123)
    at LearnCrawling.ExampleofCrawling.main(ExampleofCrawling.java:14)
端口1497上的启动ChromeDriver 2.46.628402(536cd7adbad73a3783fdc2cab92ab2ba7ec361e1)
只允许本地连接。
请保护ChromeDriver和相关测试框架使用的端口,以防止恶意代码访问。
线程“main”org.openqa.selenium.WebDriverException中出现异常:未知错误:Chrome无法启动:崩溃
(未知错误:DevToolsActivePort文件不存在)
(从chrome位置C:\Users\HP\AppData\Local\Google\chrome\Application\chrome.exe启动的进程不再运行,因此ChromeDriver假定chrome已崩溃。)
(驱动程序信息:chromedriver=2.46.628402(536cd7adbad73a3783fdc2cab92ab2ba7ec361e1),平台=Windows NT 10.0.17134 x8664)(警告:服务器未提供任何堆栈跟踪信息)
命令持续时间或超时:240毫秒
构建信息:版本:“3.8.1”,修订版:“6e95a6684b”,时间:“2017-12-01T18:33:54.468Z”
系统信息:主机:'LAPTOP-17CRM6HV',ip:'192.168.43.48',os.name:'Windows 10',os.arch:'amd64',os.version:'10.0',java.version:'1.8.0_191'
驱动程序信息:Driver.version:ChromeDriver
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源)
位于sun.reflect.delegatingConstructor或AccessorImpl.newInstance(未知源)
位于java.lang.reflect.Constructor.newInstance(未知源)
位于org.openqa.selenium.remote.ErrorHandler.CreateTrowable(ErrorHandler.java:214)
位于org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
位于org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$new$0(JsonWireProtocolResponse.java:53)
位于org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$getResponseFunction$2(JsonWireProtocolResponse.java:91)
位于org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:123)
位于java.util.stream.ReferencePipeline$3$1.accept(未知源)
在java.util.Spliterators$ArraySpliterator.tryAdvance处(未知源)
位于java.util.stream.ReferencePipeline.forEachWithCancel(未知源)
位于java.util.stream.AbstractPipeline.copyIntoWithCancel(未知源)
位于java.util.stream.AbstractPipeline.copyInto(未知源)
位于java.util.stream.AbstractPipeline.wrapAndCopyInto(未知源)
位于java.util.stream.FindOps$FindOp.evaluateSequential(未知源)
位于java.util.stream.AbstractPipeline.evaluate(未知源)
位于java.util.stream.ReferencePipeline.findFirst(未知源)
位于org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:126)
位于org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73)
位于org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:142)
位于org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
位于org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601)
位于org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:219)
位于org.openqa.selenium.remote.RemoteWebDriver(RemoteWebDriver.java:142)
位于org.openqa.selenium.chrome.ChromeDriver(ChromeDriver.java:181)
位于org.openqa.selenium.chrome.ChromeDriver(ChromeDriver.java:168)
位于org.openqa.selenium.chrome.ChromeDriver(ChromeDriver.java:123)
在LearnCrawling.ExampleofCrawling.main(ExampleofCrawling.java:14)
我正在运行:Windows 10(OS build 16299)Selenium 3.12.0 ChromeDriver 3.141.59 Chrome73


有人对我可能做错的地方有什么建议吗?

您缺少ChromeOptions:

ChromeOptions options = new ChromeOptions();
driver = new ChromeDriver(options);

可能的副本请参考最新的ChromeDriver版本74!与浏览器相同。你确定你的版本是3吗?OP没有使用任何ChromeOptions。这将解决什么问题?
ChromeOptions options = new ChromeOptions();
driver = new ChromeDriver(options);