проблема кодирования в Python, когда urlopen () страница ГБК - PullRequest
0 голосов
/ 24 марта 2011

Мой код здесь:

# coding:utf-8

if __name__ == '__main__':
    from urllib2 import urlopen
    url = 'http://iccna.blog.sohu.com/164572951.html'
    data = urlopen(url).read()
    soup = BeautifulSoup(data,fromEncoding='gb18030')
    print WebExtractor(soup)

но при отладке такие данные:

��5h�,��4�H�5��VM��\

что мне делать, чтобы получить правильные данные для BeautifulSoup?Спасибо!

1 Ответ

1 голос
/ 24 марта 2011

Проблема в том, что сервер возвращает данные, сжатые Gzip.Попробуйте это:

#-*- coding: utf-8 -*-
from __future__ import print_function

import gzip
import StringIO
import urllib2
from BeautifulSoup import BeautifulSoup

url = 'http://iccna.blog.sohu.com/164572951.html'
response = urllib2.urlopen(url)
data = response.read()
data = StringIO.StringIO(data)
gzipper = gzip.GzipFile(fileobj=data)
html = gzipper.read()
soup = BeautifulSoup(html, fromEncoding='gbk')
print(soup)

В моей системе китайские иероглифы по-прежнему выглядят неправильно, но это может дать вам правильное направление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...