我注意到它可能是由beautifulsoup或递归数据结构引起的.但是,导致错误的数据结构似乎没有问题:
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)
Run Code Online (Sandbox Code Playgroud)
导致问题的陈述是:
DataDict['MovieInfo'] = MovieInfo
Run Code Online (Sandbox Code Playgroud)
和
pickle.dump(DataDict, f, True)
Run Code Online (Sandbox Code Playgroud)
以下是功能:
def SaveData():
global LinkUrlQueue
global MovieSet
global MovieInfo
global LinkUrlSet
global MovieUrlQueue
DataDict = {}
DataDict['LinkUrlSet'] = …Run Code Online (Sandbox Code Playgroud) 我使用下面的代码得到上述错误.错误发生在最后一行.请原谅主题,我只是练习我的蟒蛇技能.=)
from urllib.request import urlopen
from bs4 import BeautifulSoup
from pprint import pprint
from pickle import dump
moves = dict()
moves0 = set()
url = 'http://www.marriland.com/pokedex/1-bulbasaur'
print(url)
# Open url
with urlopen(url) as usock:
# Get url data source
data = usock.read().decode("latin-1")
# Soupify
soup = BeautifulSoup(data)
# Find move tables
for div_class1 in soup.find_all('div', {'class': 'listing-container listing-container-table'}):
div_class2 = div_class1.find_all('div', {'class': 'listing-header'})
if len(div_class2) > 1:
header = div_class2[0].find_all(text=True)[1]
# Take only moves from Level Up, TM / HM, …Run Code Online (Sandbox Code Playgroud)