[GO] UnicodeEncodeError: 'cp932' während des Python-Scrapings

Überblick

Ich möchte nur den Geschäftsnamen aus der Geschäftsnamenliste von goToEat extrahieren und an CSV ausgeben.

Beautifulsoup requests python3 windows10

Ich benutze.

Fehlerdetails und Grund

Ich konnte den Geschäftsnamen einschließlich des Tags in Form einer Liste extrahieren, indem ich das HTML-Tag mit dem folgenden Code angab


        urlName = "https://premium-gift.jp/eatosaka/use_store?events=page&id={}&store=&addr=&industry=".format(PageNumber)
        dataHTML = requests.get(urlName)
        soup = BeautifulSoup(dataHTML.content, "html.parser")
        elems = soup.select('h3.store-card__title')

Ersetzen und löschen Sie zusätzliche Informationen und geben Sie sie in CSV aus. Mir wurde gesagt, dass i.text verwendet werden kann, um Textinformationen zu erhalten.

    with open(r'C:\Users\daisuke\Desktop\python\eat.csv', 'w') as f:
        writer = csv.writer(f)
        for i in elems:
            """
            i = str(i)
            i = i.replace('<h3 class="store-card__title">', '')
            i = i.replace('</h3>', '')
            i = i.replace('  ', '  ')
            i = i.replace(' ', ' ')
            """
            print(i.text)

            try:
                writer.writerow([i.text])
            except:
                writer.writerow(['error'])

Der folgende Fehler tritt auf

Live Ise Ebi Küche Nakanogo Osaka Station Front Third Building Store
Traceback (most recent call last):
  File "C:\Users\daisuke\Desktop\python\go_to_eat.py", line 24, in <module>
    writer.writerow(i)
UnicodeEncodeError: 'cp932' codec can't encode character '\xa0' in position 20: illegal multibyte sequence

Referenz 1, Referenz 2

  1. Da die zu kratzende Seite mit verschiedenen Zeichencodes erstellt wurde, wird sie zum Zeitpunkt des Kratzens automatisch mit einem beliebigen Zeichencode dekodiert.
  2. Der Zielzeichencode ist vom Betriebssystem abhängig und CP932 (shift_jis) ist für Windows ausgewählt.
  3. Dies ist ein Zeichencode für Japanisch und unterstützt ** \ xa0 (kein Leerzeichen) ** nicht

Lösungen

Aus diesem Grund haben wir den Unterbrechungsbereich durch einen Bereich mit halber Breite ersetzt, wie unten gezeigt. Es ist sozusagen nicht gut, weil es eine symptomatische Methode ist.


        for i in elems:
            i = str(i)
            i = i.replace('<h3 class="store-card__title">', '')
            i = i.replace('</h3>', '')
            i = i.replace('  ', '  ')
            i = i.replace(' ', ' ')
            print(i)

            try:
                writer.writerow([i])
            except:
                writer.writerow(['error'])

Vielleicht ist es am besten, einen Zeichencode anzugeben, der das betreffende Zeichen richtig ausdrücken kann. Wenn Sie der Funktion open () das Schlüsselwortargument encoding wie unten gezeigt geben, können Sie den bei der automatischen Konvertierung verwendeten Zeichencode direkt angeben. Machen Sie ihn also zu UTF-8 usw., das Unicode-Zeichen ausdrücken kann. Das ist gut.

Die Zeichen werden beim Öffnen der CSV-Datei verstümmelt, aber es ist in Ordnung, wenn ich den Zeichencode ändere.


with open(r'C:\Users\daisuke\Desktop\python\eat.csv', 'w', encoding='utf-8') as f:

Beim Lesen aus CSV wurde jedoch eine unnötige leere Spalte hinzugefügt, wie unten gezeigt. ~~ Ich weiß immer noch nicht warum. ~~ Eine ausführliche Person hat es mir in den Kommentaren erzählt und es gelöst! Vielen Dank

['Wolfgang Steak House von Wolfgang Zwinner Osaka']
[]
['Weinberg']
[]
['Sumikuni Rotating Chicken Cuisine Lucua Store']

Recommended Posts

UnicodeEncodeError: 'cp932' während des Python-Scrapings
[Scraping] Python-Scraping
Python-Scraping-Memo
Python Scraping get_ranker_categories
Scraping mit Python
Scraping mit Python
Python Scraping eBay
Python Scraping get_title
Python: Scraping Teil 1
Scraping mit Python
Python: Scraping Teil 2
Scraping in Python (Vorbereitung)
Versuchen Sie es mit Python.
Grundlagen der Python-Scraping-Grundlagen
Scraping mit Python + PhantomJS
Schaben mit Selen [Python]
Scraping mit Python + PyQuery
Scraping von RSS mit Python
Scraping mit Python 3.5 async / await
Ich habe versucht, mit Python zu kratzen
Web Scraping mit Python + JupyterLab
Schaben mit Selen in Python
Schaben mit Selen + Python Teil 1
[Python] Scraping in AWS Lambda
Schaben mit Chromedriver in Python
Festliches Scraping mit Python, Scrapy
[Python] Übergabe von Werten während der Mehrfachverarbeitung
Scraping mit Python 3.5 Async-Syntax
Scraping mit Selen in Python
Scraping mit Tor in Python
Web Scraping mit Selenium (Python)
Kratzwettervorhersage mit Python
Schaben mit Selen + Python Teil 2
[Python + Selen] Tipps zum Scraping
Ich habe versucht, mit Python zu kratzen
Web Scraping Anfänger mit Python
Python Crawling & Scraping Kapitel 4 Zusammenfassung
Versuchen Sie es mit Python + Beautiful Soup
Scraping mit Node, Ruby und Python
Scraping mit Selen in Python (Basic)
Scraping mit Python, Selen und Chromedriver
pip install mysql-Handling Fehler während Python
Web Scraping mit Python Erster Schritt
Ich habe versucht, WebScraping mit Python.
Kratzen mit Python und schöner Suppe
Ausnahmebehandlung während der Python-API-Kommunikation
Lassen Sie uns mit Python Image Scraping durchführen
Führen Sie Python Script während CodeSys # RunTime aus
Holen Sie sich Qiita-Trends mit Python-Scraping
[Python] Memo zum Erstellen von Scraping-Tools
Web Scraping für Anfänger in Python (1)
Web Scraping für Anfänger in Python (4) -1
"Scraping & maschinelles Lernen mit Python" Lernnotiz
Schaben 1
Holen Sie sich Wetterinformationen mit Python & Scraping
[Python] Informationen zu Scraping-Objektiven von price.com
Abrufen von Eigenschaftsinformationen durch Scraping mit Python
WEB-Scraping mit Python (für persönliche Notizen)