Веб-сканирование с использованием docker-кластера селеновой сетки

Я работаю над докером сетки селена, чтобы очистить веб-сайт. Если я использую только один хромовый узел, это означает, что селеновая сетка работает, если я масштабирую более одного узла хромированной селеновой сетки, и 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 и набрал индивидуальный код

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 ', ... desire_capabilities = DesiredCapabilities.CHROME) строка.

Может ли кто-нибудь дать решение этой проблемы? Обратите внимание, что он работает, если сетка селена имеет один узел (хром), если я масштабирую более одного узла (хром).

Это сообщение об ошибке спустя долгое время:

Я также прикрепил скриншот консоли сетки селена, когда используется несколько узлов. ссылка здесь, чтобы увидеть изображение

Похоже, вы запускаете новые узлы Selenium с Firefox, но ваши тесты специально ищут Chrome.


person Vignesh    schedule 03.07.2018    source источник


Ответы (1)


Я бы рекомендовал использовать Zalenium для настройки вашей Selenium Grid: https://github.com/zalando/zalenium

Отслеживание (последний вызов последним): файл "", строка 1, в файле "/home/vicky/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", строка 156, в файле init self.start_session (возможности, browser_profile) "/home/vicky/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", строка 251 , в start_session response = self.execute (Command.NEW_SESSION, parameters) Файл "/home/vicky/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", строка 320, в выполнить файл self.error_handler.check_response (ответ) "/home/vicky/.local/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", строка 242, в check_response поднять класс исключения (сообщение, screen, stacktrace) selenium.common.exceptions.WebDriverException: Сообщение: Ошибка пересылки нового сеанса Ошибка пересылки запроса Подключиться к 172.18.0.8:5555 [/172.18.0.8] не удалось: Время ожидания подключения истекло (время подключения med out) Stacktrace: в 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.Sletp. java: 790) в org.seleniumhq.jetty9.servlet.ServletHolder.handle (ServletHolder.java:860) в org.seleniumhq.jetty9.servlet.ServletHandler.doHandle (ServletHandler.java:535) в org.jettyiumhandle .handler.ScopedHandler.nextHandle (ScopedHandler.java:188) по адресу org.seleniumhq.jetty9.server.session.SessionHandler.doHandle (SessionHandler.java:1595) по адресу org.seleniumhq.jetty9.server.handler.ScopedHandler. .java: 188) на org.seleniumhq.jetty9.server.handler.ContextHandler.doHandle (ContextHandler.java:1253) на org.selen iumhq.jetty9.server.handler.ScopedHandler.nextScope (ScopedHandler.java:168) на org.seleniumhq.jetty9.servlet.ServletHandler.doScope (ServletHandler.java:473) на org.seleniumhq.jettyion.server.server. doScope (SessionHandler.java:1564) в org.seleniumhq.jetty9.server.handler.ScopedHandler.nextScope (ScopedHandler.java:166) в org.seleniumhq.jetty9.server.handler.ContextHandler.doScope (ContextHandler.java) на 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:256stract) на org.selenium9.hioq.jet .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 (EatiumWhatYoug.jetyouKill.produce (EatiumWhatYoug:1:40) .util.thread.strategy.EatWhatYouKill.run (EatWhatYouKill.java:131) на org.seleniumhq.jetty9.util.thread.R eservedThreadExecutor $ ReservedThread.run (ReservedThreadExecutor.java:382) на org.seleniumhq.jetty9.util.thread.QueuedThreadPool.runJob (QueuedThreadPool.java:708) на org.seleniumhq.ThreadPool.java:708) на org.seleniumhq.ThreadPoolued (QueuedThreadoolued (2.ThreadPoolued). .java: 626)

person Stevo    schedule 10.07.2018