Python中的Spider / Scraper,从多处理插入数据

时间:2018-03-31 01:04:47

标签: python multithreading web-scraping web-crawler

所以我在Python中编写一个小蜘蛛/刮刀,使用多个进程获取和分析不同的URL。 我的问题是如何插入在上一个操作中收集的数据?

从每个进程调用一个线程?将它们添加到全局对象并在之后插入数据库?其他选择?

谢谢。

2 个答案:

答案 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()

This the source code

这是我的第一个答案,如果有帮助,我会很高兴。

答案 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