pythonでwebサイトからのhtml取得をしましたが文字化けします。


次のコードでhtmlを取得しましたが、

[code]

    import urllib2
    fp = urllib2.urlopen('http://2689.web.fc2.com/1989/GS/GS1.html')
    html = fp.read()
    fp.close()
    
[/code]

次のように文字化けしてしまいます。

出力結果（一部）

[code]

    <div class='score'>
    <p class='data-ce'><span>4??8???@1???@?????h?[???@56,000?l</span></p>
    <div class='float-clear'></div>
    <table border='1' cellspacing='2' class='board1'>
    
[/code]

どのようにしたら、文字化けを直せるでしょうか？教えてください、お願いします。




`chardet`ライブラリの`detect`を使用すれば文字コードが判別できますので、それをUnicodeに`decode`すれば取得元がどんな文字コードでも対応できます。

[code]

    import urllib
    import chardet
    
    url = 'http://2689.web.fc2.com/1989/GS/GS1.html'
    # データ取得
    data = ''.join(urllib.urlopen(url).readlines())
    # エンコーディング判別
    guess = chardet.detect(data)
    # Unicode化
    unicode_data = data.decode(guess['encoding'])
    
[/code]

あとはBeautifulSoupなりPyQueryなりでスクレイピング等をすれば良いです。

参考URL：<http://ymotongpoo.hatenablog.com/entry/20110103/1294032545>

