我正在使用goose-extractor来解析字典键中的url列表。 我正在使用python 2.7.6 我的代码如下:
import json
import re
import sys
from goose import Goose
from pymongo import MongoClient
mongoobj = MongoClient()
coll = mongoobj.db_name.coll_name
gobj = Goose()
eachkey = sys.argv[1]
print "\n "+eachkey
all_data = []
total_data = len(json_data[eachkey])
count = 0.0
for each_link in json_data[eachkey]:
print "\r",str(round(count/total_data,2)),
count += 1
try:
data = gobj.extract(each_link)
new_data =" ".join( re.findall(r"\b\w+\b",data.cleaned_text))
text = ""
if new_data:
text = new_data
elif data.meta_description:
text = " ".join(re.findall(r"\b\w+\b", data.title + " " + data.meta_description))
if text:
coll.insert_one({"text":text, "label":eachkey, "title":data.title})
except Exception as e:
print e
Goose似乎在tmp中创建一个名为goose /的文件夹 它正在填充tmp文件,它已经填满了我的系统空间..我不希望这会导致我的系统崩溃。有没有什么我做错了垃圾收集没有正确发生。
答案 0 :(得分:0)
Goose可以将数据临时存储在本地存储中,然后才能从中提取内容, 我不知道任何搜寻器都可以在不使用大量本地存储的情况下高效地执行此操作,
可以从文件configuration.py as self.local_storage_path =
配置本地存储路径。
还要在该文件中设置self.debug =False
以避免进一步加载。
在完成鹅处理后,也请按照注释中的建议使用release_resources()
函数,
看起来像这样
def relase_resources(self):
path = os.path.join(self.config.local_storage_path, '%s_*' % self.article.link_hash)
for fname in glob.glob(path):
try:
os.remove(fname)
except OSError:
# TODO better log handling
pass
并清除临时资源。
通常,即使只有几百个中级源的tmp文件也不足以使系统崩溃。