泡菜。倾倒满足运行时错误:cmp中超过了最大递归深度

2024-09-30 16:20:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我注意到它可能是由beauthulsoup或递归数据结构引起的。但是,导致错误的数据结构似乎没有问题:

class Movie:
def __init__(self, name="", dscore=0, mscore=0, durl="", murl=""): 
    self.name = name
    self.dscore = float(dscore)
    self.mscore = float(mscore)
    self.durl = durl
    self.murl = murl
def __str__(self):
    return unicode(self.name) + u' / ' + unicode(self.dscore) + u' / ' + unicode(self.mscore) \
        + u' / ' + unicode(self.durl) + u' / ' + unicode(self.murl)

导致问题的陈述是:

^{pr2}$

以及

pickle.dump(DataDict, f, True)

功能如下:

def SaveData():
global LinkUrlQueue
global MovieSet
global MovieInfo
global LinkUrlSet
global MovieUrlQueue
DataDict = {}
DataDict['LinkUrlSet'] = LinkUrlSet
DataDict['MovieSet'] = MovieSet
#DataDict['MovieInfo'] = MovieInfo
DataDict['LinkUrlQueue'] = LinkUrlQueue
DataDict['MovieUrlQueue'] = MovieUrlQueue
f = open('MovieInfo.txt', 'wb')

for item in MovieInfo:
    f.write(item.__str__().encode('utf8') + '\n'.encode('utf8'))
f.close()
try:
    print 'saving data...'
    f = open('spider.dat', 'wb')
    pickle.dump(DataDict, f, True)
    f.close()
except IOError as e:
    print 'IOError, error no: %d' % e.no
    print 'saved to spider2.dat'
    pickle.dump(DataDict, open('spider2.dat', 'wb'))
    time.sleep(10)

我的完整源代码:

在蜘蛛网.py:http://paste.ubuntu.com/7149731/

在fetch.py:http://paste.ubuntu.com/7149732/

你可以下载并运行。在

此外,欢迎任何编码风格的建议


Tags: nameselfdefunicodedumpglobalpicklemurl
1条回答
网友
1楼 · 发布于 2024-09-30 16:20:33

嗯。。。我终于自己解决了这个问题。。。在

这个问题的原因是pickle不能处理beauthulsoup!!!一般来说,它不能处理html解析器。在

我意识到,当把参数传递到函数中时,我应该将它们转换成str()或unicode()然后进行赋值,而不是将它们作为beautifulGroup对象保留下来。。。在

~谢谢大家~

相关问题 更多 >