2016-07-01 12 views
0

Ich benutze Python, um Inhalte einer Webseite zu extrahieren. Der HTML-Inhalt, auf den ich mich konzentriere, enthält einige chinesische Zeichen und andere übliche Zeichen.
Dann habe ich versucht, das HTML-Tag und seinen Inhalt zu drucken, die gedruckten Texte sind alle chaotisch Code. Wie unten zeigt:Wie drucke ich Textinhalte, die chinesische Schriftzeichen in Python enthalten?

<h4>绔彛:443</h4> 
<h4>A瀵嗙爜:</h4> 
<h4>鍔犲瘑鏂瑰紡:aes-256-cfb</h4> 

Der ursprüngliche Inhalt ist wie folgt:

<h4>端口:443</h4> 
<h4>A远端:</h4> 
<h4>加密方式:aes-256-cfb</h4> 

Könnten Sie mir bitte helfen, wie aus dem richtigen Inhalt in der Konsole drucken? Ich benutze Python 2.7. Der Code-Snippet wird wie unten dargestellt:
enter image description here

Hinzufügen eine Update:
Nachdem ich Shiva Vorschlag versucht, die lxml Art und Weise verwendet wird, habe ich das Ergebnis, wie unten capture gezeigt:
enter image description here

das zweite Update hinzufügen:
enter image description here

Könnten Sie Plädoyer Kannst du mir sagen, wie man in der Git-Bash-Konsole chinesische Schriftzeichen anzeigt?
Vielen Dank im Voraus!

Mit freundlichen Grüßen,
Junma

Antwort

0

Sie können versuchen:

soup=BeautifulSoup(html, "lxml", from_encoding='utf-8')

Sie die Codierung durch einen Blick auf die Seite Informationen, wie unten gezeigt bekommen kann mit Firefox oder Chrom:

EDIT:

from bs4 import BeautifulSoup 

import requests 

url = "http://www.cnblogs.com/rollenholt/archive/2011/08/01/2123889.html" 
html=requests.get(url).text 

soup=BeautifulSoup(html, "lxml", from_encoding='utf-8') 

lst=soup.find_all('span') 

for h in lst: 
    print h.string #or you could do print h 

Ich bekomme das Bel ow Ausgang wehn ich es laufen. enter image description here

+0

Hallo Shiva, es funktioniert besser mit LXML-Bibliothek. Ich habe aber noch ein anderes Problem festgestellt, dass das aktuelle ausgedruckte Log als '[u 'u52a0 \ u5bc6 \ u65b9 \ u5f0f: aes-256-cfb']' angezeigt wird. Wie kann ich dann die chinesischen Schriftzeichen anzeigen lassen? – cmjauto

+0

Entweder Sie können einzelne Elemente einer Liste drucken oder Sie können etwas tun, wie in [hier] erwähnt (http://stackoverflow.com/questions/20947173/printing-unicode-char-inside-a-list). – shiva

+0

Hallo Shiva, die Methode in Ihrem vorgeschlagenen Link kann in einigen Sonderzeichen nicht funktionieren.Python meldet den Fehler: 'UnicodeEncodeError: 'gbk' Codec kann das Zeichen u '\ xa0' nicht an Position 10: Unzulässige Multibyte-Sequenz codieren.' – cmjauto

0
>>> print u'加密方式'.encode('utf-8').decode('gbk') 
鍔犲瘑鏂瑰紡 

Ihre Konsole ist so konfiguriert, GBK zu handhaben. Configure it to handle UTF-8 instead.

+0

Hallo Ignacio, danke für Ihre Antwort. Ich habe mein Code-Snippet angehängt, da der Inhalt, den ich ausdrucken möchte, aus einer Variablen "h4" stammt. Ich habe das Gefühl, dass ich Ihre Lösung nicht mit Ihnen verwenden kann, habe ich recht? Außerdem kann meine Konsole chinesische Zeichen korrekt anzeigen, es ist Git Bash Konsole. – cmjauto

+0

Das war keine Lösung, das war eine Demonstration. Die Lösung ist im zweiten Teil meiner Antwort. –

Verwandte Themen