BeautifulSoup AttributeError: 'slice' object has no attribute 'lower'

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
2fersen
User
Beiträge: 15
Registriert: Montag 19. November 2018, 14:24

Hallo Leute,
ich versuche mithilfe von BeautifulSoup eine E-Mail ansehnlicher aussehen zu lassen, jedoch bekomme ich diese Fehlermeldung stattdessen ausgespuckt.

Code: Alles auswählen

Traceback (most recent call last):
  File "C:/Users/Oli/Google Drive/Programmieren/IF/imap.py", line 42, in <module>
    soup = BeautifulSoup(raw, "lxml")
  File "C:\Users\Oli\Google Drive\Programmieren\IF\venv\lib\site-packages\bs4\__init__.py", line 278, in __init__
    markup, from_encoding, exclude_encodings=exclude_encodings)):
  File "C:\Users\Oli\Google Drive\Programmieren\IF\venv\lib\site-packages\bs4\builder\_lxml.py", line 148, in prepare_markup
    markup, try_encodings, is_html, exclude_encodings)
  File "C:\Users\Oli\Google Drive\Programmieren\IF\venv\lib\site-packages\bs4\dammit.py", line 227, in __init__
    self.markup, self.sniffed_encoding = self.strip_byte_order_mark(markup)
  File "C:\Users\Oli\Google Drive\Programmieren\IF\venv\lib\site-packages\bs4\dammit.py", line 279, in strip_byte_order_mark
    if (len(data) >= 4) and (data[:2] == b'\xfe\xff') \
  File "C:\Users\Oli\AppData\Local\Programs\Python\Python37-32\lib\email\message.py", line 391, in __getitem__
    return self.get(name)
  File "C:\Users\Oli\AppData\Local\Programs\Python\Python37-32\lib\email\message.py", line 468, in get
    name = name.lower()
AttributeError: 'slice' object has no attribute 'lower'
Mein Code:

Code: Alles auswählen

import imaplib, email
from bs4 import BeautifulSoup

user = 'XXXX'
password = 'XXX'
imap_url = 'imap.gmx.net'


con = imaplib.IMAP4_SSL(imap_url)
con.login(user, password)

con.select('INBOX')

result, data = con.fetch(b'11', '(RFC822)')

raw = email.message_from_bytes(data[0][1])

soup = BeautifulSoup(raw, "html.parser")
Würde mich freuen wenn mir jemand helfen könnte dieses Problem zu lösen :wink:
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

Und wo steckt in dem Code die benängelte Zeile?!
Sirius3
User
Beiträge: 17746
Registriert: Sonntag 21. Oktober 2012, 17:20

Du solltest mal anschauen, was `raw` eigentlich ist.
2fersen
User
Beiträge: 15
Registriert: Montag 19. November 2018, 14:24

Raw war wohl doch nicht nur HTML Code sondern hat noch andere Informationen beinhaltet.

Das hier hat das ganze gefixt:

Code: Alles auswählen

html = raw.get_payload(None, True)
soup = BeautifulSoup(html, "html.parser")
Benutzeravatar
__blackjack__
User
Beiträge: 13100
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

`raw` ist vielleicht kein guter Name…
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten