Ewig
V2EX  ›  Python

scrapy 中这里的-s 是表示字符串吗?

By Ewig at 2018 年 12 月 24 日 · 2569 次点击

#!/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:~/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:~/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:~/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 时间的参数?

5 条回复  •  2018-12-24 14:01:41 +08:00
PulpFunction
   1
PulpFunction  
   2018 年 12 月 24 日
我用的 scrapyd 套了 scrapy,用了初始化方法传递了参数,想传啥传啥
Ewig
   2
Ewig  
OP
   2018 年 12 月 24 日
@PulpFunction 怎么做的,能具体说说嘛
Ewig
   3
Ewig  
OP
   2018 年 12 月 24 日
@PulpFunction
argv = sys.argv
argv.append('-s')
argv.append('LOG_FILE=logs/' + argv[2] + '.log')
argv.append('-s')
argv.append('睡眠时间为%s='%argv[3])
argv.append('-s')
argv.append('LOG_FORMAT=%(asctime)s [' + argv[2] + '][%(name)s] %(levelname)s: %(message)s')
print(argv)
sys.exit(execute(argv))
你说的是这?
PulpFunction
   4
PulpFunction  
   2018 年 12 月 24 日
你搜搜 scrapyd+scrapy+flask
我是搭建一个接口,flask 调用 scrapyd,scrapyd 调用 scrapy
没有用到 3 楼这些东西
PulpFunction
   5
PulpFunction  
   2018 年 12 月 24 日
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 了
大概就是这样
推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
© 2026 V2EX · 29ms · 3.9.8.5