Seite 1 von 1

TypeError in find() Methode

Verfasst: Sonntag 11. Oktober 2020, 16:46
von Emreeocn
Guten Tag,
Python wirft mir momentan einen Fehler zu, den ich leider nicht zu verbessern weiß.

Code:
def getProductCode(content):
code = "<div class=\"listview__image-wrapper\">\\n<a\\nhref="

i = content.find(code) + len(code) + 1
iStr = content[i:len(content)]

return iStr[0:(iStr.find("\""))]

Fehler:
File "pricecompare.py", line 9, in getProductCode
i = content.find(code) + len(code) + 1
TypeError: argument should be integer or bytes-like object, not 'str'

Entdeckt jemand den Fehler?
Danke im Voraus!

Re: TypeError in find() Methode

Verfasst: Sonntag 11. Oktober 2020, 16:57
von snafu
content ist offenbar ein Bytes-Objekt. Dieses musst du vorher in einen String umwandeln, oder eben - wie die Fehlermeldung sagt - Bytes als Argument übergeben. Abgesehen davon verarbeitet man HTML in Python nicht so, sondern mit einem geeigneten Parser. BeautifulSoup ist da sehr beliebt und dementsprechend wäre dann auch die Aussichten auf entsprechenden Support...

Re: TypeError in find() Methode

Verfasst: Sonntag 11. Oktober 2020, 17:07
von Sirius3
@snafu: in keiner Programmiersprache sollte man HTML so verarbeiten.
Variablennamen und Funktionen schreibt man komplett klein. Was soll das i bei iStr bedeuten? Benutze keine kryptischen Buchstabenkombinationen oder Abkürzungen, das macht das verstehen des Codes nur unnötig kompliziert. "\\n" wird wohl kaum in `content` vorkommen.

Zum Verarbeiten von HTML benutzt man einen HTML-Parser. BeautifulSoup hat sich als der Standard etabliert.
Sonst würde man auch nicht mit Indizes herumstückeln, sondern z.B. str.partition verwenden.

Re: TypeError in find() Methode

Verfasst: Sonntag 11. Oktober 2020, 17:15
von Emreeocn
snafu hat geschrieben: Sonntag 11. Oktober 2020, 16:57 content ist offenbar ein Bytes-Objekt. Dieses musst du vorher in einen String umwandeln, oder eben - wie die Fehlermeldung sagt - Bytes als Argument übergeben. Abgesehen davon verarbeitet man HTML in Python nicht so, sondern mit einem geeigneten Parser. BeautifulSoup ist da sehr beliebt und dementsprechend wäre dann auch die Aussichten auf entsprechenden Support...
Danke!