2012-08-16 64 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