用pyspider框架爬虫时,如何实现全局变量的修改,传递?
刚接触pyspider,想用pyspider爬去知乎,但是无法实现在这个框架内的变量传递。
我先把变量定义成对象的属性
以下是我问题最基础的代码:
from pyspider.libs.base_handler import *
class Handler(BaseHandler):
crawl_config = {
}
def __init__(self):
self.num = 0
@every(minutes=24 * 60)
def on_start(self):
self.num += 1
print self.num
self.index_page()
@config(age=10 * 24 * 60 * 60)
def index_page(self):
self.num +=1
print self.num
self.crawl('http://www.baidu.com',callback=self.detail_page)
@config(priority=2)
def detail_page(self):
print self.num #**调用这个语句的时候发现self.num 变回了我初始定义的值,说明在index_page函数中对其的改变没有被传给detail_page函数。**
self.num += 1
print self.num
请问self.crawl()中是否有某个参数能够实现变量的传递?
我试着用global定义全局变量:
from pyspider.libs.base_handler import *
global num
num = 0
class Handler(BaseHandler):
crawl_config = {
}
@every(minutes=24 * 60)
def on_start(self):
global num
num += 1
print num
self.index_page()
@config(age=10 * 24 * 60 * 60)
def index_page(self):
global num
num +=1
print num
self.crawl('http://www.baidu.com',callback=self.detail_page)
print num
@config(priority=2)
def detail_page(self):
global num
print num
num += 1
print num
还是出现这个问题,detail_page()函数执行时,num的值是初始值。
基础比较薄弱,望大神指点
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
http://docs.pyspider.org/en/l...
找到问题了,pyspider文档中的crawl()参数save 可以传递变量