首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Goose-extractor在tmp中创建一个名为goose的文件夹,并使用文件填充该文件夹

Python Goose-extractor在tmp中创建一个名为goose的文件夹,并使用文件填充该文件夹
EN

Stack Overflow用户
提问于 2018-04-24 19:39:17
回答 1查看 66关注 0票数 0

我使用goose-extractor从字典键中解析urls列表。我使用的是python 2.7.6,我的代码如下:

代码语言:javascript
复制
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文件填充这个文件夹,它已经填满了我的系统空间。我不希望这件事让我的系统崩溃。有没有什么地方我做错了,垃圾收集没有正确发生。

EN

回答 1

Stack Overflow用户

发布于 2019-01-15 14:45:39

Goose将数据临时存储在本地存储上,然后才能从本地存储中提取内容,我不知道有什么爬虫可以在不使用一定数量的本地存储的情况下有效地完成这项工作。

可以从文件configuration.py as self.local_storage_path =配置本地存储路径。也在该文件集self.debug =False中,以避免进一步加载。

同样,在goose完成之后,使用评论中建议的release_resources()函数,它看起来像这样

代码语言:javascript
复制
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文件也不足以使系统崩溃。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50000758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档