Ich hole Daten von einer Webseite mit urllib2 ab. Der Inhalt aller Seiten ist in englischer Sprache, daher gibt es kein Problem beim Umgang mit nicht-englischem Text. Die Seiten sind jedoch codiert und enthalten manchmal HTML-Entitäten wie £ oder das Copyright-Symbol usw.
Ich möchte überprüfen, ob Teile einer Seite bestimmte Schlüsselwörter enthalten - jedoch möchte ich dies in einer nicht-unterscheidenden Groß-/Kleinschreibung durchführen (aus offensichtlichen Gründen).
Wie kann ich den zurückgegebenen Seiteninhalt am besten in Kleinbuchstaben konvertieren?
def get_page_content_as_lower_case(url):
request = urllib2.Request(url)
page = urllib2.urlopen(request)
temp = page.read()
return str(temp).lower() # das funktioniert nicht, weil die Seite UTF-8 Daten enthält
[[Update]]
Ich muss nicht unbedingt urllib2 verwenden, tatsächlich kann ich stattdessen BeautifulSoup verwenden, da ich Daten aus einem bestimmten Element(en) in der Seite abrufen muss - für das BS eine viel bessere Wahl ist. Ich habe den Titel entsprechend geändert.
ALLERDINGS bleibt das Problem bestehen, dass die abgerufenen Daten in einer nicht-ASCII-Codierung (sollte) in UTF-8 vorliegen. Ich habe eine der Seiten überprüft und die Codierung war iso-8859-1.
Da ich mich nur für die englische Sprache interessiere (von englischsprachigen Websites), möchte ich wissen, wie ich eine in Kleinbuchstaben konvertierte ASCII-Zeichenfolge der von der Seite abgerufenen Daten erhalten kann - damit ich einen Groß-/Kleinschreibungstest durchführen kann, ob ein Schlüsselwort im Text gefunden wird.
Ich gehe davon aus, dass die Tatsache, dass ich mich nur auf Englisch (von englischsprachigen Websites) beschränkt habe, die Codierungsvarianten verringert. Ich kenne mich nicht viel mit Codierungen aus, aber ich gehe davon aus, dass die gültigen Optionen sind:
- ASCII
- iso-8859-1
- utf-8
Ist das eine gültige Annahme, und falls ja, gibt es vielleicht eine Möglichkeit, eine 'robuste' Funktion zu schreiben, die eine codierte Zeichenfolge akzeptiert, die englischen Text enthält, und eine in Kleinbuchstaben konvertierte ASCII-Zeichenfolge zurückgibt?