2012-10-04 54 views
2

我在Python 3的一段代码,从网站获取信息:的Python 3的urllib编码

webpage = urllib.request.urlopen('http://www.bdm.insee.fr/bdm2/index.action') 
webpage = webpage.read() 
webpage = webpage.decode("ISO-8859-1") 
parser = etree.HTMLParser() 
tree = etree.fromstring(webpage,parser) 
for liste in tree.iterfind(".//ul"): 
    print(etree.tostring(liste, pretty_print=True).decode("utf-8")) 

我不明白为什么有些字符编码正确,而有些则没有。下面是输出的一部分:

<ul class="liens"><li><a href="http://www.insee.fr/fr/publications-et-services/default.asp?page=rediffusion/rediffusion-abon-bdm.htm">Souscription</a></li> 
</ul> 
<ul id="lienstransversauxbas"><li class="premier" id="navigation-lettre">&#13; 
<a href="http://www.insee.fr/fr/publications-et-services/default.asp?page=abonnements/liste-abonnements.htm" title="Lire la lettre d'information">Lettre d'information</a>&#13; 
</li>&#13; 
<li id="navigation-plan">&#13; 
<a accesskey="3" href="http://www.insee.fr/fr/publications-et-services/services/plan-du-site.asp" title="Plan du site">Plan du site</a>&#13; 
</li>&#13; 
<li id="navigation-boutique">&#13; 
<a href="http://www.webcommerce.insee.fr/index.php" title="Acc&#233;der &#224; la boutique en ligne">Acheter les publications</a>&#13; 
</li>&#13; 
<li id="navigation-credits">&#13; 
<a accesskey="8" href="http://www.insee.fr/fr/publications-et-services/default.asp?page=copyright.htm" title="Copyright Insee">Mentions l&#233;gales et cr&#233;dits</a>&#13; 
</li>&#13; 
</ul> 

什么是那些&#13?

感谢,

迈克尔

+0

不要使用'urllib' ..我建议'请求 - - 它为现代网络! – Surya

+1

这并不是坏建议,但与他看到的行为完全无关。 –

+0

如果我可以坚持使用标准软件包,但感谢您的建议,会更好。 – user1720740

回答

0

这些都是回车。我怀疑etree明确包含它们,以便保留空白,就像使用&nbsp;来保存空间一样。尽管如此,这是一个猜测。我在原始资料中没有看到&#13;,所以我不清楚为什么etree正在竭尽全力保存它。

+0

所以你说这是一个应该报告的错误。 – user1720740

+0

我这么认为,但我并不完全熟悉'etree'的预期操作在这里。换句话说:我知道它是什么(我回答了这个问题),并且它本身并不是错误的,但它完全没有必要,也没有任何贡献。 –

+0

我将这件事报告给邮件列表。我没有回答... – user1720740