Scrapy: необходимо установить SELENIUM_DRIVER_NAME и SELENIUM_DRIVER_EXECUTABLE_PATH - PullRequest
0 голосов
/ 05 июля 2019

enter image description here

Я пытаюсь получить пакет с косметикой https://github.com/clemfromspace/scrapy-selenium.

Я следовал инструкциям на главной странице github выше,Я запустил новый проект scrapy и создал паука:

from scrapy_selenium import SeleniumRequest

from shutil import which

SELENIUM_DRIVER_NAME = 'firefox'

SELENIUM_DRIVER_EXECUTABLE_PATH = which('geckodriver')
SELENIUM_DRIVER_ARGUMENTS=['-headless']  # '--headless' if using chrome instead of firefox



class MySpider(scrapy.Spider):

    start_urls = ["http://yahoo.com"]
    name = 'test'


    def start_requests(self):
        for url in self.start_urls:

            yield SeleniumRequest(url, self.parse_index_page)


    def parse_index_page(self, response):
        ....

Я скачал последнюю версию geckodriver и установил путь, как указано выше

Вывод содержит:

 'scrapy.extensions.telnet.TelnetConsole',
 'scrapy.extensions.logstats.LogStats']
2019-07-05 14:14:44 [scrapy.middleware] WARNING: Disabled SeleniumMiddleware: SELENIUM_DRIVER_NAME and SELENIUM_DRIVER_EXECUTABLE_PATH must be set
2019-07-05 14:14:44 [scrapy.middleware] INFO: Enabled downloader middlewares:
2019-07-05 14:56:59 [scrapy.middleware] INFO: Enabled downloader middlewares:

['scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware', 'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware', 'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware' 'scrapydle.mware.loader.RetryMiddleware »,« scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware »,« scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware »,« scrapy.downloadermiddlewares.redirect.RedirectMiddleware.HttpProxyMiddleware ',' scrapy.downloadermiddlewares.stats.DownloaderStats ']

Я не вижу загрузчик селена и вижу

WARNING: Disabled SeleniumMiddleware: SELENIUM_DRIVER_NAME and SELENIUM_DRIVER_EXECUTABLE_PATH must be set. 

Что я делаю не так?

РЕДАКТИРОВАТЬ:

I END UP UP PUTTING:

# -*- coding: utf-8 -*-
import os
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

SELENIUM_DRIVER_NAME = 'firefox'
SELENIUM_DRIVER_EXECUTABLE_PATH = 'E:/ENVS/r3/scrapySelenium/geckodriver.exe'
SELENIUM_DRIVER_ARGUMENTS=[]  # '--headless' if using chrome instead of firefox'

os.environ["PATH"] += os.pathsep + SELENIUM_DRIVER_EXECUTABLE_PATH
os.environ["PATH"] += os.pathsep + '..../AppData/Local/Mozilla Firefox'



firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
firefox_capabilities['binary'] = '..../AppData/Local/Mozilla Firefox/firefox.exe'

driver = webdriver.Firefox(capabilities=firefox_capabilities)

в settings.py, после множества сообщений об ошибках, которые в итоге привели его в действие

1 Ответ

1 голос
/ 08 июля 2019

Вы должны добавить эти настройки (SELENIUM_DRIVER_*) к настройкам Scrapy , которые обычно определяются в файле settings.py.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...