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: 4639
Registriert: Freitag 17. April 2009, 10:28

Und wo steckt in dem Code die benängelte Zeile?!
Sirius3
User
Beiträge: 18375
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: 14336
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

`raw` ist vielleicht kein guter Name…
„Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.“ — Brian W. Kernighan
Antworten