2016-03-25 4 views
0

J'essaie actuellement de supprimer un caractère chinois ainsi que des lettres non standard. Dans les résultats, c'est comme si Mechanize venait de sauter le caractère chinois ou une lettre non standard.L'utilisation de Mechanize pour obtenir des caractères chinois à partir d'un site Web ne renvoie rien

Mon 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 

Le résultat que je devrais obtenir (par exemple):

<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 le résultat que je reçois:

<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> 

J'apprécie toute aide et Je peux fournir plus d'informations si nécessaire.

+0

Veuillez utiliser 'beautifulsoup4' à la place pour analyser HTML. Utiliser des expressions régulières pour HTML peut conduire à [résultats indésirables] (http://stackoverflow.com/a/1732454/918959) –

Répondre

1

Vous devez supprimer la ligne html = unicode(html, errors='ignore')

votre environnement de terminal sur LANG doit être UTF-8

et RUN votre code!

+0

Désolé, je n'ai pas précisé que c'était tout mon code, seulement les bits pertinents. Aussi, ce changement a fonctionné, merci beaucoup! –

+0

Aucun problème et bienvenue. – han058