当前位置: 首页 > 知识库问答 >
问题:

使用selenium grid docker集群的Webscraping

闾丘晨
2023-03-14

我在selenium grid docker上工作来刮网站。如果我只使用一个chrome节点,则表示selenium网格正在工作,如果我缩放chrome selenium网格的一个以上节点,而scrapy再次停止工作。它只是闪烁一段时间后,与大的错误信息。

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中停止。游标只是闪烁了很长一段时间,然后显示大的错误消息。我认为问题出在webdriver.remote(command_executor='http://localhost:5000/wd/hub',...desired_capabilities=desiredcapabilities.chrome)行。

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

跟踪(最近的调用是最后一次):文件“”,第1行,在文件“/home/vicky/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py”中,第156行,在init self.start_session(capability,browser_profile)文件“/home/vicky/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py”中,在第251行,在start_session.error_handler.check_response(响应)文件“/home/vicky/.local/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py”,第242行,在check_response引发exception_class(message,screen,stacktrace)selenium.common.exceptions.webdriverexception:message:Error forwarding the new session Error forward the request Connect to 172.18.0.8:5555andler.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.server.handler.scopedHandler.nexthandle(ScopedHandler.java:188)在org.seleniumhq.jetty9.server.handler.sessionHandler.doHandle(SessionHandler.java:1595)在org.seleniumhq.jetty9.server.handler.scopedHandler.java:188)在org.seleniumhq.jetty9.server.session.sessionHandler.nexthandle在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:115),在9.server.handler.handlerWrapper.handlerWrapper.handlerWrapper.java:132)(handlerWrapper.java:132)(org.seleniumhq.jetty9.server.server.server.handl(server.java:530)(org.seleniumhq.jetty9.server.httpchannel.handl(httpchannel.java:347)(httpchannel.java:347)(httpchannel.java:347)(httpchannel.java:256)(httpconnection.javty9.ioEst.java:102)在org.seleniumhq.jetty9.io.channelendpoint$2.run(channelendpoint.java:124)在org.seleniumhq.jetty9.util.thread.strategy.eatwhatyoukill.dopr在org.seleniumHQ.jetty9.util.thread.strategy.eatwhatyoukill.produce(Eatwhatyoukill.java:247)在org.seleniumHQ.jetty9.util.thread.strategy.eatwhatyoukill.produce(Eatwhatyoukill.java:140)在org.seleniumHQ.jetty9.util.thread.strategy.eatwhatyoukill.jun(eatwhatyoukill.java:131)在hq.jetty9.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:626)

我还附上了使用多节点时的selenium网格控制台截图。链接到这里查看图片

共有1个答案

淳于健
2023-03-14

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

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

 类似资料:
  • 我将使用嵌入在 JBoss EAP 6.2 中的 HornetQ 2.3.12,并且需要一些集群队列。 我是否需要设置 JBoss 集群才能让 JMS 集群由大黄蜂 Q 提供支持,或者大黄蜂 Q 是独立的?根据文档,我认为是后者,因为大黄蜂Q集群是大黄蜂Q的一部分,可以在没有JBoss的情况下存在。 节点通过核心网桥连接,因此部署在每个节点中的应用程序将对队列名称执行本地 JNDI 查找,而无需集

  • 问题内容: 我正在尝试在Wildfly 8.2上创建一个简单的集群。我已经配置了2个Wildfly实例,它们以独立的群集配置运行。我的应用程序已部署到这两个应用程序,并且我可以毫无问题地访问它。 我的集群EJB如下所示: …并且我编写了一个非常简单的RESTful服务,让我可以通过浏览器调用这些方法… 我可以从单个Wildfly实例中调用和方法,并获得预期值。但是,如果我尝试从一个实例调用poke

  • 问题内容: 我对SQL(Server2008)的较低层次的了解是有限的,现在我们的DBA对此提出了挑战。让我解释一下这种情况:(我已经提到一些明显的陈述,希望我是对的,但是如果您发现有问题,请告诉我)。 我们有一张桌子,上面放着人们的“法院命令”。创建表(名称:CourtOrder)时,我的创建方式如下: 然后,我将非聚集索引应用于主键(以提高效率)。我的理由是,这是一个唯一字段(主键),应该像我

  • 本文介绍如何使用 TiUP 的 DM 组件运维 DM 集群。使用 TiUP 部署 DM 的完整步骤可参考使用 TiUP 部署 DM 集群。 注意: 需要确保以下组件间端口可正常连通: 各 DM-master 节点间的 peer_port(默认为 8291)可互相连通。 各 DM-master 节点可连通所有 DM-worker 节点的 port(默认为 8262)。 各 DM-worker 节点可

  • TiUP 是 TiDB 4.0 版本引入的集群运维工具,TiUP DM 是 TiUP 提供的使用 Golang 编写的集群管理组件,通过 TiUP DM 组件就可以进行日常的运维工作,包括部署、启动、关闭、销毁、扩缩容、升级 DM 集群以及管理 DM 集群参数。 目前 TiUP 可以支持部署 v2.0 及以上版本的 DM。本文将介绍不同集群拓扑的具体部署步骤。 注意: 如果部署机器的操作系统支持