[PYTHON] Umgang mit UnicodeDecodeError beim Ausführen des Downloads von Google-Bildern

0. Einleitung

Der Download von Google-Bildern ist sehr praktisch, um Lernbilder für die Bilderkennung mit Tensorflow usw. zu sammeln.

Der Google Pip-Download, der mit pip abgerufen werden kann, kann zu diesem Zeitpunkt (2020/06) keine normalen Bilder erfassen. Daher habe ich die modifizierte Version des Google Image-Downloads erhalten. Als ich jedoch die erhaltene Python-Datei ausführte, erhielt ich einen UnicodeDecodeError, sodass ich ein Memorandum über den Umgang damit hinterlassen werde.

Übrigens werde ich diesen Inhalt nicht ansprechen, aber ein separater Chrome-Treiber ist erforderlich, um 101 oder mehr Bilder mit Google Imade Download zu sammeln.

1. Umwelt

macOS Catalina 10.15.3 Python 3.5.3 pip 20.1.1

2. Mit pip installieren

Sie können Google Image Download mit Pip installieren.

pip install google_images_download

Selbst wenn es zu diesem Zeitpunkt (2020/06) ausgeführt wird, kann die Bildersammlung nicht normal durchgeführt werden.

~ $ ./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

3. Installation der festen Version

Eine modifizierte Version des Downloads von Google-Bildern ist unten verfügbar. Holen Sie sie sich also mit dem Git-Klon. https://github.com/Joeclinton1/google-images-download/tree/patch-1

Als ich die erhaltene Python-Datei ausführte, wurde der folgende Fehler angezeigt.

~ $ 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

4. UnicodeDecodeError-Problemumgehung

Google_images_download.py behoben. "Ignorieren" zum Fehlerargument von bytes.decode () hinzugefügt.

   # 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

Es gibt einige Bilder, die aufgrund von URLError usw. nicht erfasst werden können, aber jetzt können Sie Bilder normal erfassen.

$ 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

~ Abkürzung ~

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

5. Schlussfolgerung

Ich habe den aufgetretenen Fehler einfach ignoriert, aber da ich das angestrebte Bild sammeln konnte, habe ich aufgehört, die Ursache zu verfolgen. Wenn ich Zeit habe, möchte ich die Ursache untersuchen und geeignete Maßnahmen ergreifen.

Recommended Posts

Umgang mit UnicodeDecodeError beim Ausführen des Downloads von Google-Bildern
Umgang mit Fehlern beim Auftreffen auf pip pip
Umgang mit OAuth2-Fehlern bei Verwendung von Google APIs aus Python
[AWS] Umgang mit WordPress "Beim Zuschneiden eines Bildes ist ein Fehler aufgetreten."
Vorgehensweise beim Ausführen von Transaktionen: In Anaconda fehlgeschlagen
Umgang mit unausgeglichenen Daten
Umgang mit dem DistributionNotFound-Fehler
Umgang mit Fehlern bei der Installation von Whitenoise und der Bereitstellung auf Heroku
Umgang mit Fehlern bei der Installation von Python und Pip mit Choco
Umgang mit Enum-Kompatibilitätsfehlern
So suchen Sie in Google Colaboratory nach Google Drive
So laden Sie YouTube-Videos mit youtube-dl herunter
Umgang mit SSL-Fehlern beim Herstellen einer Verbindung zu S3 mit Python boto
Umgang mit Speicherlecks in matplotlib.pyplot
Ich kann nicht nerven. Wie man mit nervigen Objekten umgeht
So beschneiden Sie ein Bild mit Python + OpenCV
Umgang mit Laufzeitfehlern in subprocess.call
Der Umgang mit dem Modul'tensorflow 'hat kein Attribut' '
So zeigen Sie im gesamten Fenster an, wenn Sie das Hintergrundbild mit tkinter einstellen
Umgang mit "^ [[A ^ [[B ^ [[C ^ [[D"]] beim Drücken der Richtungstaste beim Ausführen von Python auf dem Mac
[Ansible] Verwendung der SSH-Kennwortauthentifizierung bei der Ausführung von ansible
Umgang mit Pyenv-Initialisierungsfehlern bei Fischen 3.1.0
[Python] So legen Sie den Download-Speicherort mit youtube-dl fest
So laden Sie Dateien in Google Drive mit Google Colaboratory
Zugriff mit dem Cache beim Lesen von_json mit Pandas
[Python] Umgang mit Pandas read_html Lesefehler
Analysieren mit Google Colaboratory mithilfe der Kaggle-API
Umgang mit dem Fehler "Typfehler: Keine übereinstimmende Signatur gefunden" bei Verwendung von pandas fillna
Bild herunterladen mit Flickr API
Umgang mit statischen Dateien bei der Bereitstellung in der Produktion mit Django
So extrahieren Sie einen Termin in Google Kalender mit Python
So laden Sie keine Bilder, wenn Sie PhantomJS mit Selen verwenden
[Ev3dev] So zeigen Sie ein BMP-Bild mit Python auf dem LCD an
Wie aktualisiere ich mit SQLAlchemy?
So lösen Sie den CSRF-Schutz bei Verwendung von AngularJS mit Django
Wie man mit Theano besetzt
[AWS] Umgang mit dem Fehler "Ungültiger Codepunkt" in CloudSearch
Eine Geschichte über den Umgang mit dem CORS-Problem
Für Anfänger, wie man mit häufigen Fehlern in Keras umgeht
So schreiben Sie ein Datenspeicher-Update asynchron mit Google Apps Engine
So trennen Sie Zeichenfolgen mit ','
Umgang mit dem Terminal, das ohne Erlaubnis in die pipenv-Umgebung gelangt, wenn pipenv mit vscode verwendet wird
Wie man RDP auf Fedora31 macht
2 Möglichkeiten, mit SessionNotCreatedException umzugehen
Wie lösche ich mit SQLAlchemy?
So geben Sie zusätzliche Informationen aus, wenn Sie Protokolle mit dem Protokollierungsmodul von Python ausgeben
So verwenden Sie Google Colaboratory
So gehen Sie mit dem Problem um, dass das aktuelle Verzeichnis verschoben wird, wenn Python von Atom ausgeführt wird
Umgang mit dem Fehler "Fehler beim Laden des Moduls" canberra-gtk-module ", der beim Ausführen von OpenCV auftritt
Wie man mit Python-Installationsfehlern in pyenv umgeht (BUILD FAILED)
Wie man Japanern nicht entgeht, wenn man mit json in Python umgeht
Umgang mit "Sie haben mehrere Authentifizierungs-Backends konfiguriert ..." (Django)
So zeigen Sie Formeln in Latex an, wenn Sie sympy (> = 1.4) in Google Colaboratory verwenden
So installieren Sie Pandas auf EC2 (Umgang mit MemoryError und PermissionError)
Herstellen einer Verbindung zum Cloud Firestore über Google Cloud-Funktionen mit Python-Code
Google-Logo herunterladen → Text mit OCR → In HTML anzeigen
[Icrawler] So laden Sie Bilder auch nach Änderung der Google-Spezifikationen herunter (nach 2020.3)