Scrapyd API получить и исключение, когда я пытаюсь запустить паука - PullRequest
0 голосов
/ 10 июня 2019

У меня проблема с scrapyd api.

Я пишу простой паук, он получает URL домена в качестве аргумента.

import scrapy

class QuotesSpider(scrapy.Spider):
    name = 'quotes'

    def __init__(self, domains=None):
        self.allowed_domains = [domains]
        self.start_urls = ['http://{}/'.format(domains)]

    def parse(self, response):
        # time.sleep(int(self.sleep))
        item = {}
        item['title'] = response.xpath('//head/title/text()').extract()
        yield item

Он отлично работает, если я запускаю его как

scrapy crawl quotes -a domains=quotes.toscrape.com

Но когда приходит время запускать его через scrapyd_api, оно идет не так:

from scrapyd_api import ScrapydAPI

scrapyd = ScrapydAPI('http://localhost:6800')
scrapyd.schedule(project='pd', spider='quotes',  domains='http://quotes.toscrape.com/')

Я получаю - builtins.TypeError: init () получил неожиданный аргумент ключевого слова '_job'

Как запустить скрап-пауки с помощью API-интерфейса scrapyd api?

1 Ответ

1 голос
/ 10 июня 2019

это ответ.

Согласно этому ответу Я ошибся в супер-методе.

теперь мой код выглядит так:

class QuotesSpider(scrapy.Spider):
    name = 'quotes'
    start_urls = []

    def __init__(self, *args, **kwargs):
        super(QuotesSpider, self).__init__(*args, **kwargs)
        self.allowed_domains = [kwargs.get('domains')]
        self.start_urls.append('http://{}/'.format(kwargs.get('domains')))
...