2012-08-16 37 views
1

我正在开发webcrawler,以自动在巴西网站上下载一些文档。它使用一些未知的编码(头标记中没有定义字符集)。urllib编码问题

通过一些非常小的努力,人们可以阅读文档。但真正的问题是,列出文档的页面使用包含加重字符的URL的链接。但是,在不知道页面的编码的情况下,当我从urllib2.urlopen中检索它时,所有的字符都搞砸了。

例如Í字符为Cyrillic capital letter E

我使用BeautifulSoup和美化不起作用,因为urllib2已经返回与坏字符的文档。

还有一件事:soup.originalEncoding返回None

如何设置urllib2.urlopen以识别字符集或设置“期望的编码”,以便返回浏览器上显示的字符?

+0

有多少巴西编码可以呢? CP860? http://docs.python.org/library/codecs.html?highlight=codecs#standard-encodings – monkut 2012-08-16 13:27:05

回答

2

可以从标题中检索字符集。我会给你我使用的代码,但它来源于How to download any(!) webpage with correct charset in python?。而且,他更好地解释了这个过程。所以,我会在那里指出你的意思。

+0

传递给链接的解决方案确实有效。我之前尝试将编码参数设置为BeautifulSoup构造函数,但它不起作用。但后来我注意到,在bs4中,他们将其改为from_encoding,这是python中更常用的一种表示法,它工作得很好。此外,我使用以下解决方案来正确地将网址转换为ascii:http://stackoverflow.com/questions/804336/best-way-to-convert-a-unicode-url-to-ascii-utf-8-percent- python 非常感谢! – Ken 2012-08-16 14:58:50