Le téléchargement d'images Google est très pratique pour collecter des images d'apprentissage pour la reconnaissance d'image avec Tensorflow, etc.
Le téléchargement d'image Google qui peut être obtenu avec pip ne peut pas collecter d'images normalement pour le moment (2020/06), j'ai donc obtenu la version modifiée de téléchargement d'image Google. Cependant, lorsque j'ai exécuté le fichier python obtenu, j'ai obtenu un UnicodeDecodeError, je vais donc laisser un mémorandum sur la façon de le gérer.
À propos, je ne parlerai pas de ce contenu, mais un pilote chrome séparé est nécessaire pour collecter 101 images ou plus avec le téléchargement de google imade.
macOS Catalina 10.15.3 Python 3.5.3 pip 20.1.1
Vous pouvez installer le téléchargement d'image google avec pip.
pip install google_images_download
Cependant, même si elle est exécutée à ce moment (2020/06), la collecte d'images ne peut pas être effectuée normalement.
~ $ ./google_images_download/google_images_download.py --keywords "cat"
Item no.: 1 --> Item name = cat
Evaluating...
Starting Download...
Unfortunately all 100 could not be downloaded because some images were not downloadable. 0 is all we got for this search filter!
Errors: 0
Everything downloaded!
Total errors: 0
Total time taken: 1.4127511978149414 Seconds
Une version modifiée du téléchargement d'images google est disponible ci-dessous, alors obtenez-la avec git clone. https://github.com/Joeclinton1/google-images-download/tree/patch-1
Lorsque j'ai exécuté le fichier python obtenu, j'ai eu l'erreur suivante.
~ $ python ./gid-joeclinton/google_images_download/google_images_download.py -k cat
Item no.: 1 --> Item name = cat
Evaluating...
Starting Download...
Traceback (most recent call last):
File "./gid-joeclinton/google_images_download/google_images_download.py", line 1019, in <module>
main()
File "./gid-joeclinton/google_images_download/google_images_download.py", line 1008, in main
paths,errors = response.download(arguments) #wrapping response in a variable just for consistency
File "./gid-joeclinton/google_images_download/google_images_download.py", line 844, in download
paths, errors = self.download_executor(arguments)
File "./gid-joeclinton/google_images_download/google_images_download.py", line 962, in download_executor
items,errorCount,abs_path = self._get_all_items(raw_html,main_directory,dir_name,limit,arguments) #get all image items and download images
File "./gid-joeclinton/google_images_download/google_images_download.py", line 765, in _get_all_items
image_objects = self._get_image_objects(page)
File "./gid-joeclinton/google_images_download/google_images_download.py", line 754, in _get_image_objects
object_decode = bytes(object_raw, "utf-8").decode("unicode_escape")
UnicodeDecodeError: 'unicodeescape' codec can't decode byte 0x5c in position 123085: \ at end of string
Correction de google_images_download.py. Ajout de "ignorer" à l'argument d'erreur de bytes.decode ().
# Getting all links with the help of '_images_get_next_image'
def _get_image_objects(self,s):
start_line = s.find("AF_initDataCallback({key: \\'ds:1\\'") - 10
start_object = s.find('[', start_line + 1)
end_object = s.find('</script>', start_object + 1) - 4
object_raw = str(s[start_object:end_object])
object_decode = bytes(object_raw, "utf-8").decode("unicode_escape","ignore")
image_objects = json.loads(object_decode)[31][0][12][2]
image_objects = [x for x in image_objects if x[0]==1]
return image_objects
Certaines images ne peuvent pas être acquises en raison d'URLError, etc., mais maintenant vous pouvez collecter des images normalement.
$ python ./gid-joeclinton/google_images_download/google_images_download.py -k cat
Item no.: 1 --> Item name = cat
Evaluating...
Starting Download...
Completed Image ====> 1.XXXX.png
Completed Image ====> 2.XXXX.jpg
~ abrégé ~
Unfortunately all 100 could not be downloaded because some images were not downloadable. 65 is all we got for this search filter!
Errors: 35
Everything downloaded!
Total errors: 35
Total time taken: 173.5407509803772 Seconds
J'ai simplement ignoré l'erreur qui est apparue, mais comme j'ai pu collecter l'image que je visais, j'ai arrêté de poursuivre la cause. Quand j'aurai le temps, j'aimerais enquêter sur la cause et prendre les mesures appropriées.