Python中scrapy命令的-s参数是表示字符串吗?
#!/usr/bin/python3
import sys
from scrapy.cmdline import execute
class main(): def run(self): argv = sys.argv argv.append('-s') argv.append('LOG_FILE=logs/' + argv[2] + '.log') argv.append('-s') argv.append('LOG_FORMAT=%(asctime)s [' + argv[2] + '][%(name)s] %(levelname)s: %(message)s') print(argv[3]) print(argv) sys.exit(execute(argv))
if name == 'main': main().run()
这是一个 main 类
下面我再有一个 supervisor 类
#!/usr/bin/python3 import sys import datetime from main import main import time from scrapy.cmdline import execute
if name == 'main': argv = sys.argv while 1: startTime = time.time() main().run() endTime = time.time() time.sleep(argv[3]) if argv[3] < endTime - startTime: logerror_path = "logs/logerror.log"
这是一个 supervisor 类,这里调用 main 类但是这里我 运行如下
shenjianlin[@newdev](/user/newdev):~/my_project/Espider/Espider(shenwei/spider_12_20)$ python3 supervisor.py crawl traveldaily ['supervisor.py', 'crawl', 'traveldaily', '-s', 'LOG_FILE=logs/traveldaily.log', '-s', 'LOG_FORMAT=%(asctime)s [traveldaily][%(name)s] %(levelname)s: %(message)s'] shenjianlin[@newdev](/user/newdev):~/my_project/Espider/Espider(shenwei/spider_12_20)$ python3 supervisor.py crawl traveldaily 120 ['supervisor.py', 'crawl', 'traveldaily', '120', '-s', 'LOG_FILE=logs/traveldaily.log', '-s', 'LOG_FORMAT=%(asctime)s [traveldaily][%(name)s] %(levelname)s: %(message)s'] Usage
scrapy crawl [options] <spider></spider>
crawl: error: running 'scrapy crawl' with more than one spider is no longer supported shenjianlin[@newdev](/user/newdev):~/my_project/Espider/Espider(shenwei/spider_12_20)$ python3 supervisor.py crawl traveldaily 120 120 ['supervisor.py', 'crawl', 'traveldaily', '120', '-s', 'LOG_FILE=logs/traveldaily.log', '-s', 'LOG_FORMAT=%(asctime)s [traveldaily][%(name)s] %(levelname)s: %(message)s'] Usage
scrapy crawl [options] <spider></spider>
crawl: error: running 'scrapy crawl' with more than one spider is no longer supported
如何才能在 main 中支持传一个 sleep 时间的参数?
Python中scrapy命令的-s参数是表示字符串吗?
我用的 scrapyd 套了 scrapy,用了初始化方法传递了参数,想传啥传啥
-s 参数不是表示字符串,而是用来设置Scrapy项目的设置(settings)的。
在命令行中,-s 后面跟的是 NAME=VALUE 的形式,用来覆盖项目配置文件(settings.py)中的设置项。例如:
scrapy crawl myspider -s LOG_LEVEL=WARNING -s CONCURRENT_REQUESTS=32
这会把日志级别设为 WARNING,同时并发请求数改为 32,而不用去改 settings.py 文件。
总结:-s 是设置项目配置参数,不是普通字符串参数。
怎么做的,能具体说说嘛
你搜搜 scrapyd+scrapy+flask
我是搭建一个接口,flask 调用 scrapyd,scrapyd 调用 scrapy
没有用到 3 楼这些东西
flask 调用 scrapyd 时候也是 api
发送一串类似{‘project’: ‘ppp’, ‘参数 1’: 0, ‘参数 2’: ‘参数 3’,‘参数 4’:xx,‘参数’:nn}到 scrapyd
你可以用{‘project’: '’, ‘sleep’: 10}
用这个参数只需要在spider 类__init__文件中写
def init(self, sleep=0, **kwargs):
这个函数体里面就可以用 sleep 了
大概就是这样

