我正在尝试使用字典为我的爬虫索引网页,并且遇到了一些有趣的内存问题。
我正在为索引创建一个字典(格式:关键字:[url1,url2,url3,...]),我将使用它来跟踪哪些页面包含哪些单词。当我收集网页时,我使用函数 add_page_to_index()
def add_page_to_index(self, url):
for keyword in url.get_text().split():
self.add_to_index(keyword, url)
def add_to_index(self, keyword, url):
for word in self.index:
if word == keyword:
if url not in self.index[word]:
self.index[word].append(url)
return
# not found, add new keyword to index
self.index[keyword] = [url]
这段代码对我很有帮助(我知道它有性能问题,但效率不是这个项目的本质),但是当我将 add_to_index() 更改为:
def add_to_index(self, keyword, url):
if keyword in self.index:
self.index[keyword].append(url)
else: # not found, add new keyword to index
self.index[keyword] = [url]
突然,python 的内存使用量猛增(我最终得到了 MemoryError)。这是我的代码有问题还是有其他解释?
请注意,我是一名高中生,因此我不一定具有最广泛的编程背景。
谢谢!
编辑:把它改成我原来的。