我一直在尝试从Flickr下载图片。我首先从Flickr中抓取所有URL,然后将URL列表提供给一个函数,该函数为我下载这些URL中的图像。
def download_link(directory,url):
flName = str(directory + str(os.path.basename(url)))
urlretrieve(url, flName)
download = partial(download_link, download_dir)
with Pool(10) as p:
p.map(download, urlList)
我看到的问题是,脚本每次都不会失败。我特别注意到,当我经常重新运行脚本时,它经常失败。它会在失败之前下载一些URL。我并不特别怀疑列表中只有一些导致此失败的错误URL。 这是否有原因? 以下是错误的完整回溯:
Traceback (most recent call last):
File "SocialMediaImageExtracts.py", line 62, in <module>
__main__(sys.argv)
File "SocialMediaImageExtracts.py", line 59, in __main__
p.map(download, urlList)
File "/Users/sreejithmenon/anaconda/lib/python3.5/multiprocessing/pool.py", line 260, in map
return self._map_async(func, iterable, mapstar, chunksize).get()
File "/Users/sreejithmenon/anaconda/lib/python3.5/multiprocessing/pool.py", line 608, in get
raise self._value
multiprocessing.pool.MaybeEncodingError: Error sending result: '<multiprocessing.pool.ExceptionWithTraceback object at 0x1037de0f0>'. Reason: 'TypeError("cannot serialize '_io.BufferedReader' object",)'
非常感谢任何帮助。
编辑:我确定没有错误的网址,因为它只是针对该集合中的所有网址运行了一次,现在又失败了