

次のコードで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]

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


CC BY-SA 3.0
2015-06-09T10:32:14.193
11182
2015-06-11T00:21:16.793
2015-06-09T13:11:14.543
49
10072
question
python
pythonでwebサイトからのhtml取得をしましたが文字化けします。

[code]

    html = fp.read()
    
[/code]

これを

[code]

    html = fp.read().decode('shift_jis')
    
[/code]

このように変更すれば直せると思います。


CC BY-SA 3.0
2015-06-09T12:52:12.990
11190
2015-06-09T12:52:12.990
9575
11182
answer


`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>


CC BY-SA 3.0
2015-06-11T00:21:16.793
11241
2015-06-11T00:21:16.793
7214
11182
answer