当我尝试启动蜘蛛时,Scrapyd api get 和 exeption
Scrapyd api get and exeption when I try to start spider
我有一个关于 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'
如何通过带参数的 scrapyd api 启动 scrapy 蜘蛛?
这是一个答案。
根据this answer我错了超级方法。
现在我的代码如下所示:
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')))
我有一个关于 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'
如何通过带参数的 scrapyd api 启动 scrapy 蜘蛛?
这是一个答案。
根据this answer我错了超级方法。
现在我的代码如下所示:
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')))