2

Dies ist eine Suppe aus einer Wordpress Post Detailseite:Wie man Inhalte eines Tags in BeautifulSoup in Unicode rendert?

content = soup.body.find('div', id=re.compile('post')) 
title = content.h2.extract() 
item['title'] = unicode(title.string) 
item['content'] = u''.join(map(unicode, content.contents)) 

ich den umschließende div Tag weglassen will, wenn item['content'] zuweisen. Gibt es eine Möglichkeit, alle untergeordneten Tags eines Tags in Unicode zu rendern? Etwas wie:

item['content'] = content.contents.__unicode__() 

das wird mir eine einzige Unicode-Zeichenfolge anstelle einer Liste geben.

Antwort

6

Haben Sie versucht:

unicode(content) 

Es wandelt content ‚s Markup auf einen einzigen Unicode-String.

Edit: Wenn Sie das umschließende Tag nicht wollen, versuchen Sie:

content.renderContents() 
+0

Ja, aber ich möchte das umschließende Tag wegzulassen. Outer DIV in diesem Fall. – muhuk

+0

Nun, renderContents() gibt einen str zurück und nicht einen Unicode. Ich möchte unnötige Codierung und Decodierung vermeiden. – muhuk

+2

Ich habe die Dokumente und den Quellcode überprüft, aber ich konnte keine Methode finden, die den Inhalt als einzelnes Unicode-Objekt zurückgibt. renderContents() gibt eine in UTF-8 codierte Zeichenfolge zurück. Das Konvertieren des Ergebnisses von renderContents() in ein Unicode-Objekt ist der beste Ansatz, den ich finden kann. –