V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
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
Ewig
V2EX  ›  Python

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

  •  
  •   Ewig · 2018-12-24 09:51:18 +08:00 · 1576 次点击
    这是一个创建于 1921 天前的主题,其中的信息可能已经有所发展或是发生改变。

    #!/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 10:52:32 +08:00
    我用的 scrapyd 套了 scrapy,用了初始化方法传递了参数,想传啥传啥
    Ewig
        2
    Ewig  
    OP
       2018-12-24 12:22:37 +08:00
    @PulpFunction 怎么做的,能具体说说嘛
    Ewig
        3
    Ewig  
    OP
       2018-12-24 12:26:40 +08:00
    @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 13:53:58 +08:00
    你搜搜 scrapyd+scrapy+flask
    我是搭建一个接口,flask 调用 scrapyd,scrapyd 调用 scrapy
    没有用到 3 楼这些东西
    PulpFunction
        5
    PulpFunction  
       2018-12-24 14:01:41 +08:00
    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 了
    大概就是这样
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3251 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 11:47 · PVG 19:47 · LAX 04:47 · JFK 07:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.