1

我在我的脚本中使用 ghost 包来抓取网站。由于我有很多页面要刮,ghost 被多次使用,每页大约 30 次,我可能有数百页要刮。我注意到,在运行我的脚本时,大约 25 页后,我开始收到 Ghost::Qt::Qthread 错误,甚至在此之前,ghost 的含义似乎不一致:基本上,ghost 用于从简单的页面看起来像这样:

这就是网页的样子 - 我正在提取这部手机#

我怀疑它与内存过载或类似的事情有关,但我必须承认我是 Python 新手,并且在编程方面不够熟练(我来自硬件世界)。

有没有人遇到过这类问题?我知道 ghost 有一个名为 remove_page 的方法,它应该删除创建的“页面”,但我尝试使用它,但我认为它不起作用(或者我遗漏了一些东西),这是我尝试使用这个 remove 并删除后的代码,我仍然可以使用该对象:

from ghost import Ghost
gh=Ghost()
page, page_name = gh.create_page()
gh.remove_page(page)

运行此程序并键入后,page我希望不会定义任何页面。如何释放资源,删除页面,甚至删除gh创建的对象?

4

1 回答 1

1

当前版本的 Ghost.py (0.2.3) 应该已经修复了这个问题。但是,超过 0.1.2 的版本在加载某些网站时会出现一些错误。在它自己的进程中运行 Ghost.py 代码将修复旧版本上的这些内存问题:

from multiprocessing import Process
from ghost import Ghost

def load_page(url):
    gh = Ghost()
    page, page_name = gh.open(url)

p = multiprocessing.Process(target=load_page, args=(url))
p.start()
p.join

如果您需要从流程中取回数据,则必须考虑使用多处理队列。

于 2015-11-23T20:44:48.803 回答