【问题标题】:Webscraping using selenium grid docker cluster使用 selenium 网格 docker 集群进行 Webscraping
【发布时间】:2018-12-11 21:37:00
【问题描述】:

我正在使用 selenium grid docker 来抓取网站。如果我只使用一个 chrome 节点,则意味着如果我缩放多个 chrome selenium 网格节点并且scrapy 再次停止工作,则 selenium 网格正在工作。它只是在一段时间后闪烁,并带有很大的错误消息。

from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import scrapy
from selenium import webdriver

class ProductSpider(scrapy.Spider):
    name = "product_spider"
    start_urls = ['https://google.com']

    def __init__(self):
        options = webdriver.ChromeOptions()

        options.add_argument('--headless')

        self.driver = webdriver.Remote(command_executor='http://localhost:5000/wd/hub',
            desired_capabilities=DesiredCapabilities.CHROME)


    def parse(self, response):
        data = self.driver.get(response.url)
        print(data,'/////////////')

然后我打开python shell并输入代码

Python 3.6.5 (default, Apr  1 2018, 05:46:30) 
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from selenium import webdriver
>>> from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
>>> options = webdriver.ChromeOptions()
>>> options.add_argument('--headless')
>>> driver = webdriver.Remote(command_executor='http://localhost:5000/wd/hub',
...             desired_capabilities=DesiredCapabilities.CHROME)

如您所见,它在 webdriver 中停止。远程 .cursor 只是长时间闪烁,然后显示大错误消息。我认为问题出在 webdriver.Remote(command_executor='http://localhost:5000/wd/hub', ... desired_capabilities=DesiredCapabilities.CHROME) 行。

谁能给出这个问题的解决方案 请注意,如果我缩放多个节点(chrome),selenium 网格有一个节点(chrome),它就可以工作。

这是很久之后的错误信息:

Traceback(最近一次调用最后一次):文件“”,第 1 行,in 文件 “/home/vicky/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py”, 第 156 行,在 init 中 self.start_session(capabilities, browser_profile) 文件“/home/vicky/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py”, 第 251 行,在 start_session 中 response = self.execute(Command.NEW_SESSION,参数)文件“/home/vicky/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py”, 第 320 行,在执行中 self.error_handler.check_response(response) 文件“/home/vicky/.local/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py”, 第 242 行,在 check_response 中 raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: Error 转发新会话 转发请求时出错 连接到 172.18.0.8:5555 [/172.18.0.8] 失败:连接超时(连接超时)堆栈跟踪: 在 org.openqa.grid.web.servlet.handler.RequestHandler.process (RequestHandler.java:117) 在 org.openqa.grid.web.servlet.DriverServlet.process (DriverServlet.java:84) 在 org.openqa.grid.web.servlet.DriverServlet.doPost (DriverServlet.java:68) 在 javax.servlet.http.HttpServlet.service (HttpServlet.java:707) 在 javax.servlet.http.HttpServlet.service (HttpServlet.java:790) 在 org.seleniumhq.jetty9.servlet.ServletHolder.handle (ServletHolder.java:860) 在 org.seleniumhq.jetty9.servlet.ServletHandler.doHandle (ServletHandler.java:535) 在 org.seleniumhq.jetty9.server.handler.ScopedHandler.nextHandle (ScopedHandler.java:188) 在 org.seleniumhq.jetty9.server.session.SessionHandler.doHandle (SessionHandler.java:1595) 在 org.seleniumhq.jetty9.server.handler.ScopedHandler.nextHandle (ScopedHandler.java:188) 在 org.seleniumhq.jetty9.server.handler.ContextHandler.doHandle (ContextHandler.java:1253) 在 org.seleniumhq.jetty9.server.handler.ScopedHandler.nextScope (ScopedHandler.java:168) 在 org.seleniumhq.jetty9.servlet.ServletHandler.doScope (ServletHandler.java:473) 在 org.seleniumhq.jetty9.server.session.SessionHandler.doScope (SessionHandler.java:1564) 在 org.seleniumhq.jetty9.server.handler.ScopedHandler.nextScope (ScopedHandler.java:166) 在 org.seleniumhq.jetty9.server.handler.ContextHandler.doScope (ContextHandler.java:1155) 在 org.seleniumhq.jetty9.server.handler.ScopedHandler.handle (ScopedHandler.java:141) 在 org.seleniumhq.jetty9.server.handler.HandlerWrapper.handle (HandlerWrapper.java:132) 在 org.seleniumhq.jetty9.server.Server.handle (Server.java:530) 在 org.seleniumhq.jetty9.server.HttpChannel.handle (HttpChannel.java:347) 在 org.seleniumhq.jetty9.server.HttpConnection.onFillable (HttpConnection.java:256) 在 org.seleniumhq.jetty9.io.AbstractConnection$ReadCallback.succeeded (AbstractConnection.java:279) 在 org.seleniumhq.jetty9.io.FillInterest.fillable (FillInterest.java:102) 在 org.seleniumhq.jetty9.io.ChannelEndPoint$2.run (ChannelEndPoint.java:124) 在 org.seleniumhq.jetty9.util.thread.strategy.EatWhatYouKill.doProduce (EatWhatYouKill.java:247) 在 org.seleniumhq.jetty9.util.thread.strategy.EatWhatYouKill.produce (EatWhatYouKill.java:140) 在 org.seleniumhq.jetty9.util.thread.strategy.EatWhatYouKill.run (EatWhatYouKill.java:131) 在 org.seleniumhq.jetty9.util.thread.ReservedThreadExecutor$ReservedThread.run (ReservedThreadExecutor.java:382) 在 org.seleniumhq.jetty9.util.thread.QueuedThreadPool.runJob (QueuedThreadPool.java:708) 在 org.seleniumhq.jetty9.util.thread.QueuedThreadPool$2.run (QueuedThreadPool.java:626)

我还附上了使用多个节点时的 selenium 网格控制台屏幕截图。 link here to see the picture

【问题讨论】:

    标签: selenium selenium-webdriver scrapy selenium-chromedriver selenium-grid


    【解决方案1】:

    看起来您正在使用 Firefox 启动新的 Selenium 节点,但您的测试专门针对 Chrome。

    我建议使用 Zalenium 来设置您的 Selenium Grid: https://github.com/zalando/zalenium

    【讨论】:

      猜你喜欢
      • 2022-12-01
      • 2021-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-24
      • 1970-01-01
      • 1970-01-01
      • 2016-09-25
      相关资源
      最近更新 更多