我已经使用watir / mechanize和chrome驱动程序创建了一个刮板,它在开发中非常有效。 它无法在生产中使用,chrome驱动程序崩溃了,所以我不得不在我的scraper的开头添加这些行(在stackoverflow的另一个主题上找到了这些行)
args = %w[--disable-infobars --disable-dev-shm-usage --headless --no-
sandbox --disable-gpu]
options = {
binary: ENV['GOOGLE_CHROME_BIN'],
prefs: { password_manager_enable: false,
credentials_enable_service: false },
args: args
}
browser = Watir::Browser.new(:chrome, options: options)
现在,即使使用我的后台作业,它在生产中也能很好地工作(我基本上是通过单击按钮来触发正在废弃的后台作业的。)
我还有另一个后台作业,这次是Cron作业,每两周自动刮一次。 但是由于某种原因,这是行不通的。在添加以上所有行之前,我得到了相同的错误消息
Selenium::WebDriver::Error::UnknownError: unknown error: Chrome failed
to start: crashed (unknown error: DevToolsActivePort file doesn't
exist)
(The process started from chrome location /app/.apt/o...)
有时我不会收到此错误消息,并且抓取程序以Cron作业开始(无需我进行任何更改),但是它只是无法找到我想要的元素(而它每次都可以与其他后台作业一起使用,而不使用Cron和它是完全相同的内容)
您知道我在使用Cron作业时为什么会有不同的行为吗? 我会理解是否到处都存在相同的错误,但是我不明白为什么只有在使用Cron的情况下它才崩溃或很难找到我的元素。 最后一个问题:为什么我的错误始终在变化?通常,我可以修复某些问题,并且可以使用很长时间,但是使用Selenium / ChromeDriver,似乎我必须每三天更新一次代码!
非常感谢!