Как развернуть управляемые селеном пауки в облаке - PullRequest
0 голосов
/ 30 апреля 2020

Я использую scrapyd для развертывания и планирования своих пауков на моей локальной машине. Проблема, с которой я сейчас сталкиваюсь, заключается в развертывании моих пауков, которые выполняются с помощью браузера без головы.

В файле журнала на scrapyd я получаю две ошибки, которые связаны с тем, что веб-драйвер не найден в каталоге проекта

* 1004. *
  • Работают ли безоблачные браузеры в облаке?
  • Может ли быть удален хром-драйвер при развертывании моего проекта?
  • Есть ли способ просмотра файлов моего проекта в scrapyd? чтобы убедиться, что файл все еще существует в каталоге проекта?

Ниже приведена копия моего кода

# I'm using SeleniumRequest for my requests so this is the configuration is my settings file 


chrome_path='./chromedriver'
SELENIUM_DRIVER_NAME = 'chrome' # Change to your browser name
SELENIUM_DRIVER_EXECUTABLE_PATH = chrome_path
SELENIUM_DRIVER_ARGUMENTS=['--headless']  # '--headless' if using chrome instead of firefox

FEED_EXPORT_ENCODING='utf-8'

Вот мой код паука

import scrapy
from scrapy_selenium import SeleniumRequest
from scrapy.selector import Selector
import time


class CovidngSpider(scrapy.Spider):
    name = 'covidng'
    #allowed_domains = ['covid19.ncdc.gov.ng']
    #start_urls = ['https://covid19.ncdc.gov.ng/']

def start_requests(self):
    yield SeleniumRequest(url ='https://covid19.ncdc.gov.ng/', wait_time = 3, screenshot = True, callback = self.parse)

def parse(self, response):



    driver = response.meta['driver']
    page_html = driver.page_source
    new_resp = Selector(text=page_html)

    databox = new_resp.xpath("//table[@id='custom3']/tbody/tr")

    for rows in databox:
        state = rows.xpath(".//td[1]/p/text()").get()
        total_cases = rows.xpath(".//td[2]/p/text()").get()
        active_cases = rows.xpath(".//td[3]/p/text()").get()
        discharged = rows.xpath(".//td[4]/p/text()").get()
        death = rows.xpath(".//td[5]/p/text()").get()

        yield {
            'State': state,
            'Total Cases': total_cases,
            'Active Cases': active_cases,
            'Discharged' : discharged,
            'Death': death
        }

1 Ответ

0 голосов
/ 02 мая 2020

Во-первых: проверьте, установлен ли вы chromedriver, потому что он не является частью Selenium, и вы всегда устанавливали его отдельно. (То же самое относится и к geckodriver, если вы используете Firefox)

Второе: используйте /full/path/to/chromedriver - система может запустить код в другой папке, чем вы ожидаете, и тогда относительный путь ./chromedriver может указывать на место пересылки тогда вы ожидаете.

...