V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
kslr
V2EX  ›  问与答

Pyspider 中的自定义 result 究竟该如何使用,我一直无法触发成功

  •  1
     
  •   kslr · 2016-06-29 00:08:09 +08:00 · 4741 次点击
    这是一个创建于 3060 天前的主题,其中的信息可能已经有所发展或是发生改变。

    按照文档: http://docs.pyspider.org/en/latest/Working-with-Results/#working-with-resultworker

    我定义了 MyResultWorker 同时通过 config.json 的方式引入 我尝试在 my_result_worker 文件中故意制造错误确认是引入的

    以上为背景,问题来了,我在 on_result 中不管指定任何存储方法,或者简单的输出个 test 都是没有工作的。

    这是爬虫的代码,是我需要手动触发吗?比如写一个 on_result 什么的,由于我不太懂 python ,搜遍了 google,google group,sf 都没有一点提示 = =

    rom pyspider.libs.base_handler import *
    
    class Handler(BaseHandler):
      
        @every(minutes=30)
        def on_start(self):
            self.crawl('http://schoolgirl2015.tumblr.com/', callback=self.index_page)
    
        @config(age=30*60)
        def index_page(self, response):
            imglist = []
            for each in response.doc('article img').items():
                imglist.append({'src': each.attr.src, 'alt': each.attr.alt})
                
            return {
                'source': self.project_name,
                'data': imglist,
                'score': 0
            }
    

    参考: https://github.com/binux/pyspider/blob/8e29f6fa6f79af222afac3d3aebfba8a433acb61/pyspider/result/result_worker.py

    @binux

    14 条回复    2017-02-20 23:31:48 +08:00
    kslr
        1
    kslr  
    OP
       2016-06-29 22:40:07 +08:00
    binux
        2
    binux  
       2016-06-29 22:53:47 +08:00
    你怎么启动的, config.json 内容是什么
    kslr
        3
    kslr  
    OP
       2016-06-29 23:03:46 +08:00
    @binux
    在我快要放弃的时候终于碰到你了

    启动命令是 pyspider -c config.json --data-path=data --debug (python2)
    配置是:
    https://gist.github.com/kslr/037cf05f89f4bb3485eaf653a4e7246a
    kslr
        4
    kslr  
    OP
       2016-06-29 23:06:42 +08:00
    my_result_worker :

    https://gist.github.com/kslr/18946e63a2cb6d618d851901b5a99ed7

    如果需要到机器上调试的话,请给我一个邮箱,我会把账户和密码发给您
    binux
        5
    binux  
       2016-06-29 23:13:08 +08:00
    应该没有问题。但是,你并没有修改 on_result 的行为啊,你在 on_result 里面 `print result` ,命令行中都没有输出吗?
    kslr
        6
    kslr  
    OP
       2016-06-29 23:16:54 +08:00
    @binux 没有,终端最后一句是 tornado_fetcher 的状态, self.resultdb.save 是因为我百般尝试失败,直到最后一次代码

    [W 160629 11:18:08 run:406] phantomjs not found, continue running without it.
    [I 160629 11:18:11 result_worker:49] result_worker starting...
    [I 160629 11:18:11 scheduler:489] loading projects
    [I 160629 11:18:11 scheduler:424] in 5m: new:0,success:0,retry:0,failed:0
    [I 160629 11:18:13 tornado_fetcher:509] fetcher starting...
    [I 160629 11:18:13 processor:208] processor starting...
    /usr/local/lib/python2.7/dist-packages/flask/exthook.py:71: ExtDeprecationWarning: Importing flask.ext.login is deprecated, use flask_login instead.
    .format(x=modname), ExtDeprecationWarning
    [I 160629 11:18:13 app:76] webui running on 0.0.0.0:5000
    [I 160629 11:18:32 tornado_fetcher:178] [200] SchoolGirl:data:,on_start data:,on_start 0s
    [I 160629 11:18:35 tornado_fetcher:410] [200] SchoolGirl:2ff884772a402ac824ae18e73635c991 http://schoolgirl2015.tumblr.com/ 0.68s
    [I 160629 11:19:11 scheduler:424] in 5m: new:0,success:0,retry:0,failed:0
    binux
        7
    binux  
       2016-06-29 23:29:39 +08:00
    @kslr
    你这个任务是不是已经执行过了?去重策略不会抓取已经抓过的内容,也就不会有 result 产生。
    日志中有 select 某个任务吗?或者 webui active_tasks 中有成功的, index_page 任务吗?
    kslr
        8
    kslr  
    OP
       2016-06-29 23:35:04 +08:00
    @binux 自动去重?这个触发我是在 webui 中对任务 debug run 执行的,然后调试的,那么我该如何操作?
    kslr
        9
    kslr  
    OP
       2016-06-29 23:35:43 +08:00
    在编辑页面选择左上角的 run
    binux
        10
    binux  
       2016-06-29 23:44:24 +08:00
    debug 中 run 不会产生 result 的!那只是 debug !
    回到 dashboard ,把状态设置为 running ,然后点 run 。
    kslr
        11
    kslr  
    OP
       2016-06-29 23:55:15 +08:00
    @binux 我好像知道怎么解决了
    qsnow6
        12
    qsnow6  
       2017-02-20 23:18:27 +08:00
    @binux result_cls 的脚本文件是放在当前 json 所在的目录还是放到 site-page 里
    binux
        13
    binux  
       2017-02-20 23:22:10 +08:00
    @qsnow6 #12 当前目录 (cwd) 下
    qsnow6
        14
    qsnow6  
       2017-02-20 23:31:48 +08:00
    @binux thx ,我说怎么一直不生效,原来看叉眼了,一直把配置写成这样。。。。。
    ````
    {
    "result_cls": "my_result_worker.MyResultWorker"
    }

    ````
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2834 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 15:25 · PVG 23:25 · LAX 07:25 · JFK 10:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.