小白问一个 python 爬虫中文乱码的问题

2015-03-17 23:54:52 +08:00
 88

encoding: utf-8

import sys
default_encoding = 'utf-8'
if sys.getdefaultencoding() != default_encoding:
    reload(sys)
    sys.setdefaultencoding(default_encoding)

import requests
r = requests.get("http://court.gov.cn/zgcpwsw/bt/xjscjsbtdseszjrmfy/wlmqkqrmfy/ms/201503/t20150313_6914630.htm")
print r.text.encode('utf-8')

这样输出的中文为乱码,试了网上的各种办法都没用。求问各位大大应该怎么解决。。。

4289 次点击
所在节点    Python
11 条回复
yangqi
2015-03-17 23:58:44 +08:00
国内很多网站都是gbk或者gb2312的编码
icedx
2015-03-18 00:04:58 +08:00
你为什么要print 呢
lixia625
2015-03-18 00:09:04 +08:00
`import urllib
r = urllib.urlopen("http://court.gov.cn/zgcpwsw/bt/xjscjsbtdseszjrmfy/wlmqkqrmfy/ms/201503/t20150313_6914630.htm")
print r.read().encode('utf-8')
`
亲测不乱码
lerry
2015-03-18 00:31:28 +08:00
这样
#!/usr/bin/python
# coding: utf-8

import requests
r = requests.get("http://court.gov.cn/zgcpwsw/bt/xjscjsbtdseszjrmfy/wlmqkqrmfy/ms/201503/t20150313_6914630.htm")
print r.content

或者

#!/usr/bin/python
# coding: utf-8

import requests
r = requests.get("http://court.gov.cn/zgcpwsw/bt/xjscjsbtdseszjrmfy/wlmqkqrmfy/ms/201503/t20150313_6914630.htm")
r.encoding = "utf-8"
print r.text.encode('utf-8')

r.content 是网页原始编码,r.text 是decode后的内容,这个网页是utf-8编码,可以直接print

r.encoding = "utf-8" 手工设置编码,这样text会使用你设置的编码decode

另外,楼主开头几行改变默认编码是不建议的写法
Sylv
2015-03-18 03:19:02 +08:00
ericls
2015-03-18 04:20:49 +08:00
这样:
```
import requests
r = requests.get("http://court.gov.cn/zgcpwsw/bt/xjscjsbtdseszjrmfy/wlmqkqrmfy/ms/201503/t20150313_6914630.htm")
r.encoding = 'utf-8'
print r.text
```
em70
2015-03-18 05:08:31 +08:00
有些网页是经过gzip压缩的,要考虑解压问题,否则就是乱码
bbking
2015-03-20 20:04:32 +08:00
print乱码和console的编码有关,建议写到txt看看
x14oL
2015-03-22 03:00:41 +08:00
你是在cmd里面输出的吧?
如果是,因为win下cmd是cpXXX的字符集,所以会乱码的
需要decode一下
raincen
2015-03-27 15:18:25 +08:00
控制台下只能打印cp936编码,加上

import sys
import io

sys.stdout=io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')

#...
ming2281
2015-04-07 00:22:11 +08:00
我一般: print(string.encode("utf-8"))

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/177623

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX