在我以前的代码版本中,我使用for循环执行web抓取,并将数据块添加到字典中。现在,我希望使用multiprocessing
和{
为了做到这一点,我有这样的方法:
# First, create a list of pages to go over
for currentPage in range(firstPage, lastPage + 1):
bookList.append("{}{}".format(PAGE_FORMAT, currentPage))
# Multiprocessing for each index page
pagePool = Pool(lastPage - firstPage + 1)
pagePool.map(scrapePage(bookList, book), (bookList, book))
pagePool.terminate()
pagePool.join()
在这段代码中,bookList
只是一个要迭代的页面数组,book
是一个最终存储数据的字典,scrapePage
是一个获取网页和字典并对其进行处理的函数。在
我不确定如何编写我的map
参数,因为我的函数接受多个参数。我尝试过单独编写函数作为第一个参数,然后将其他参数作为map
参数,但这也不起作用。在
编辑:我检查了几个处理这种情况的问题,但是我不确定如何应用它(例如celery
)。我想在我的程序中实现的是并行地刮取数据(同时刮取多个目录页,然后在每次调用中刮取一个页面,同时刮取目录中的多个条目)。在
尽管有问题的网站已经序列化了内容(在我最初的代码中,我会刮去目录第1页,然后在页面I上刮出条目1-100。。。然后转到第二页,重复),因为我使用的是字典,我不在乎内容是否序列化。使用multiprocessing
还是celery
更好?在
您是否试图以这种方式调用
pagePool.map
:相关问题 更多 >
编程相关推荐