采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师好,在Pipeline里定义的类如JsonWithEncodingPipeline里面定义的函数是否只有__init__和process_item是可以自动调用,而自己定义的函数如spider_closed仍需要手动调用?
JsonWithEncodingPipeline
__init__
process_item
spider_closed
我在spider_closed中添加端点,debug过程没有运行到端点,是不是因为spider_closed这个函数在这里还没有起作用。
谢谢老师!
当然了 可以中讲解过,。你自定义组件那么只有指定的方法名的函数才会被调用,spider_closed方法写在spider中会被调用 但是写到其他地方就不一定会被调用了
那这里写spider_closed()方法的意义是什么呢?不会被自动调用,也没有手动调用,我还以为这个方法起作用了
spider_closed是当你的爬虫运行完后以后退出之前会被调用,也就是这里一般都是用来释放资源的,比如假设你打开了文件,这里进行flush,打开了chrome这里进行close,当然你不手动释放,操作系统就会安装进程退出的方法自动处理,只是这里手动处理更加优雅,如果你有更多的退出前的处理这里写就行了
明白了,爬虫退出前调用啊,谢谢老师
登录后可查看更多问答,登录/注册
带你彻底掌握Scrapy,用Django+Elasticsearch搭建搜索引擎
4.8k 30
2.5k 18
1.1k 18
1.4k 15
2.8k 15