1

私は、時間の経過とともにクロールが遅くなるpythonプログラムを持っています。徹底的にテストし、画像をダウンロードする方法に絞り込みました。メソッドは cstringIO と urllib を使用します。問題は、urllib を使用したある種の無限ダウンロード (数百回のダウンロード後にプログラムがフリーズするだけ) である可能性もあります。

問題がどこにあるのかについて何か考えはありますか?

        foundImages = []

        images = soup.find_all('img')
        print('downloading Images')

        for imageTag in images:
            gc.collect()

            url = None
            try:

                #load image into a file to determine size and width
                url = imageTag.attrs['src']
                imgFile = StringIO(urllib.urlopen(url).read())
                im = Image.open(imgFile)
                width, height = im.size

                #if width and height are both above a threshold, it is a valid image
                #so add to recipe images
                if width > self.minOptimalWidth and height > self.minOptimaHeight:
                    image = MIImage({})
                    image.originalUrl = url.encode('ascii', 'ignore')
                    image.width = width
                    image.height = height

                    foundImages.append(image)

                imgFile = None
                im = None
            except Exception:
                print('failed image download url: ' + url)
                traceback.print_exc()
                continue

        #set the main image to be the first in the array
        if len(foundImages) > 0:
            first = foundImages[0]
            recipe.imageUrl = first.originalUrl

        return foundImages
4

0 に答える 0