2012-04-15 2 views
0

I python2.7 und lxml bin mit einer Seite zu holen halte ich die folgenden Fehler bekommenmit Python und lxml eine Seite zu kriechen -.. (<Type 'exceptions.UnicodeEncodeError'>, UnicodeEncodeError ('ascii',

(<type 'exceptions.UnicodeEncodeError'>, UnicodeEncodeError('ascii', u'Approximate Dimensions: 4\xbd" x 4" x 7" (assembled)', 25, 26, 'ordinal not in range(128)'), <traceback object at 0x7f9198ac48c0>) 

ich habe versucht, die folgenden:?

doc = lxml.html.document_fromstring(html) 
for el in doc.iter('h2'): 
    el.text_content().decode('utf-8','ignore') 
    OR 
    el.text_content().encode('ascii', 'ignore') 

Wie ich diese Fehler beheben muss ich 1 in der Lage sein) speichern Sie die Textdatei zu MySQL in eine Textdatei dann 2) hochladen.

Dank

Antwort

2

Versuchen:

el.text_content().encode('utf-8') 

es ist Unicode, und Sie wollen es speichern (als Text) auf utf-8.

+0

hmmmm ... versucht ... .snow die gleichen Ergebnisse – Tampa

+0

Dann müssen Sie mehr Kontext geben, dh ein Traceback und den Code, auf den es sich bezieht, und die Codierung, die Sie für Ihre Datenbank/Tabelle/Spalte festgelegt haben. – thebjorn

0

Welche Header sagt die Seite für die Codierung verwenden kann anders sein als das, was es wirklich ist. Wenn die tatsächliche Kodierung der Seite nicht utf-8 ist, ist es ein bisschen trickreich, das richtige Geschäft zu machen.

Zuerst sollten Sie bei dem zurückgegebenen Text schauen von el.text_content()

x = el.text_content() print x

Wenn Sie noch einige codierte Zeichenfolge wie /x09, bedeutet dies noch nicht dekodiert wird.

Wenn x Unicode ist, (beginnend mit 'u') Sie unicode-str umwandeln sollte und entschlüsseln mit der richtigen Codierung (wie cp1252 oder sth)

chars = ''.join([chr(ord(x)) for x in el.text_content()]) /// It will change your dumb unicode to str result = chars.decode({try with different encoding until it doesn't throw an error}) /// now you decode str with proper format

Verwandte Themen