所以我在Python中编写一个小蜘蛛/刮刀,使用多个进程获取和分析不同的URL。 我的问题是如何插入在上一个操作中收集的数据?
从每个进程调用一个线程?将它们添加到全局对象并在之后插入数据库?其他选择?
谢谢。
答案 0 :(得分:0)
我目前的笨拙意见是使用Pool,对于一个小蜘蛛池就足够了。
这是一个例子:
from multiprocessing.pool import Pool
pool = Pool(20)
pool.map(main, urls) # Encapsulate the original functions into the main function.And input urls.
pool.close()
pool.join()
这是我的第一个答案,如果有帮助,我会很高兴。
答案 1 :(得分:0)
一种方法是将每个线程的结果转储到追加模式下的。func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
print("webview did enter did finish navigation")
webView.evaluateJavaScript("document.readyState", completionHandler: { (complete, error) in
if complete != nil {
webView.evaluateJavaScript("document.body.scrollHeight", completionHandler: { (result, error) in
if let heightOfContent = result as? CGFloat {
}
})
}
})
}
文件中。您可以使用上下文管理器保护您的文件。这样,如果系统由于某种原因停止执行,您将不会丢失任何数据,因为所有结果都会在可用时保存。
我建议使用csv
- statement,其主要用途是对内部使用的对象(在本例中为。with
)进行异常安全清理。换句话说,csv
确保文件关闭,锁定释放,上下文恢复等。
with