【问题标题】:Python 3 urllib encodingPython 3 urllib 编码
【发布时间】:2012-09-25 18:32:14
【问题描述】:

我有一段 Python 3 代码可以从网站检索信息:

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>

那些 是什么?

谢谢,

迈克尔

【问题讨论】:

  • 不要使用urllib.. 我建议requests - 它适用于现代网络!
  • 这并不是一个坏建议,但这与他所看到的行为完全无关。
  • 如果我能坚持使用标准包会更好,但感谢您的建议。

标签: python unicode encoding lxml


【解决方案1】:

那些是回车。我怀疑etree 明确包含它们,以便保留空格,就像使用&amp;nbsp; 来保留空间一样。不过,这是一个猜测;我在原始来源中没有看到&amp;#13;,所以我不清楚为什么etree 会竭尽全力保留它。

【讨论】:

  • 所以你说这是一个应该报告的错误。
  • 我想是这样,但我并不完全熟悉etree 的预期操作在这里。换句话说:我知道它是什么(我回答了那个),他们本身并没有错,但这完全没有必要,也没有任何贡献。
猜你喜欢
  • 2016-02-14
  • 2016-10-13
  • 2011-08-16
  • 2011-03-08
  • 1970-01-01
  • 2019-07-21
  • 2015-10-16
  • 1970-01-01
  • 2016-02-06
相关资源
最近更新 更多