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

2016-06-29 00:08:09 +08:00
 kslr

按照文档: 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

4711 次点击
所在节点    问与答
14 条回复
kslr
2016-06-29 22:40:07 +08:00
binux
2016-06-29 22:53:47 +08:00
你怎么启动的, config.json 内容是什么
kslr
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
2016-06-29 23:06:42 +08:00
my_result_worker :

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

如果需要到机器上调试的话,请给我一个邮箱,我会把账户和密码发给您
binux
2016-06-29 23:13:08 +08:00
应该没有问题。但是,你并没有修改 on_result 的行为啊,你在 on_result 里面 `print result` ,命令行中都没有输出吗?
kslr
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
2016-06-29 23:29:39 +08:00
@kslr
你这个任务是不是已经执行过了?去重策略不会抓取已经抓过的内容,也就不会有 result 产生。
日志中有 select 某个任务吗?或者 webui active_tasks 中有成功的, index_page 任务吗?
kslr
2016-06-29 23:35:04 +08:00
@binux 自动去重?这个触发我是在 webui 中对任务 debug run 执行的,然后调试的,那么我该如何操作?
kslr
2016-06-29 23:35:43 +08:00
在编辑页面选择左上角的 run
binux
2016-06-29 23:44:24 +08:00
debug 中 run 不会产生 result 的!那只是 debug !
回到 dashboard ,把状态设置为 running ,然后点 run 。
kslr
2016-06-29 23:55:15 +08:00
@binux 我好像知道怎么解决了
qsnow6
2017-02-20 23:18:27 +08:00
@binux result_cls 的脚本文件是放在当前 json 所在的目录还是放到 site-page 里
binux
2017-02-20 23:22:10 +08:00
@qsnow6 #12 当前目录 (cwd) 下
qsnow6
2017-02-20 23:31:48 +08:00
@binux thx ,我说怎么一直不生效,原来看叉眼了,一直把配置写成这样。。。。。
````
{
"result_cls": "my_result_worker.MyResultWorker"
}

````

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/288990

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX