在循环scraper中实现多处理并附加数据

时间:2016-10-23 16:02:21

标签: python csv web-scraping multiprocessing

我正在制作一个用于构建数据库的Web scraper。我打算使用的网站有索引页面,每个索引页面包含50个链接。要解析的页面数估计大约为60K及以上,这就是我想实现多处理的原因。

以下是我想要做的一些伪代码:

def harvester(index):
    main=dict()
    ....
    links = foo.findAll ( 'a')
    for link in links:
        main.append(worker(link))
        # or maybe something like: map_async(worker(link))
def worker(url):
    ''' this function gather the data from the given url'''
    return dictionary

现在我要做的就是拥有一定数量的worker函数来在不同的页面上并行收集数据。然后,这些数据将附加到位于收割机中的大字典中,或者由工作函数直接写入csv文件中。

  • 我想知道如何实现并行性。我做了一个公平的事 关于使用gevent,线程和多处理的研究数量,但是 我不确定如何实施它。
  • 我也不确定是将数据附加到大字典还是写作 直接在使用DictWriter的csv中,可以同时使用那么多输入稳定。

由于

1 个答案:

答案 0 :(得分:0)

我建议你把你的工作分成几个通过队列进行沟通的工人。

这里你主要有IO等待时间(抓取,csv写作)

所以你可以做以下事情(没有经过测试,只看到这个想法):

$(".modal-body").html("yeni içerik");

此代码应该有效(修复可能的错别字)并在所有网址完成时退出