2016-03-25 18 views
0

Ich versuche gerade, ein chinesisches Schriftzeichen sowie nicht standardisierte Buchstaben zu verschrotten. In den Ergebnissen ist es so, als ob Mechanize nur das chinesische Zeichen oder den nicht standardisierten Buchstaben übersprang.Die Verwendung von Mechanize, um chinesische Schriftzeichen von einer Website zu erhalten, bringt nichts zurück

Mein Code:

import mechanize 
import re 

br = mechanize.Browser() 
br.addheaders = [('User-agent', 'Mozilla/5.0')] 
br.set_handle_robots(False) 

html = br.open('http://hanzidb.org/character-list/by-frequency') 

html = html.read().lower() 
html = unicode(html, errors='ignore') 

#Only get the data between <td>...</dr> 
pattern2 = re.compile(r'<td>(.*?)</td>', re.MULTILINE) 
match_description2 = re.findall(pattern2, html) 

data = [] 

#Collect the content of the table 
for desc in match_description2: 
    data.append(desc) 
    print desc 

Das Ergebnis, das ich bekommen (Beispiel) werden soll:

<tr><td><a href="/character/是">是</a></td><td><span style="color:#000099;">shì</span></td><td><span class="smmr">indeed, yes, right; to be; demonstrative pronoun, this, that</span></td><td><a href="/character/日" title="Kangxi radical 72">日</a>&nbsp;72.5</td><td>9</td><td>1</td><td>1479</td></td><td>3</td></tr> 

Versus dem Ergebnis bin ich immer:

<td><a href="/character/"></a></td><td><span style="color:#000099;">sh</span></td><td><span class="smmr">indeed, yes, right; to be; demonstrative pronoun, this, that</span></td><td><a href="/character/" title="kangxi radical 72"></a>&nbsp;72.5</td><td>9</td><td>1</td><td>1479</td></td><td>3</td> 

Ich schätze jede mögliche Hilfe und Ich kann weitere Informationen zur Verfügung stellen, wenn es sein muss.

+0

Verwenden Sie 'beautifulsoup4' statt HTML zu parsen. Die Verwendung regulärer Ausdrücke für HTML kann zu [unerwünschten Ergebnissen] führen (http://stackoverflow.com/a/1732454/918959) –

Antwort

1

Sie müssen die Linie html = unicode(html, errors='ignore')

Ihre Terminal-Umgebung über LANG entfernen UTF-8

und führen Sie den Code sein muss!

+0

Entschuldigung, ich habe nicht klargestellt, dass das alles mein Code ist, nur die relevanten Bits. Auch diese Änderung hat funktioniert, danke eine Tonne! –

+0

Kein Problem und willkommen. – han058