2012-10-04 55 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