Python3 中文输出到终端乱码问题,网上的decode()不好用

langzi2050 2017-08-31 10:11:04
Python3.4做的爬虫,爬取网页的中文然后输出到终端,但是显示如图的乱码。尝试网上的decode(),不好用。麻烦大侠指点一下哪里出问题了。先谢谢了。


#!/usr/bin/env python3
# -*- coding: utf-8
import re
import urllib.request
import sys
def craw(url,page):
html1=urllib.request.urlopen(url).read()#打开url读取
html1=str(html1)#因为是bytes-like数据,需要转化
pat1='<div id="IFX_p2045".+?<div id="IFX_p2002">'#'<div id="plist".+? <div class="page clearfix">'#匹配图片list的开头和结尾,找网页中出现一次的字符串作为标识
result1=re.compile(pat1).findall(html1)#编译正则表达式,findall 找到所有符合正则的列表

result1=result1[0]#不明白这样写的意思,result=str(result1)这样写也能实现
pat2='https://dl.fang.anjuke.com/loupan/\d*.html'
imagelist=re.compile(pat2).findall(result1)
#print(imagelist)
x=1
for imageurl in imagelist:
#imagename="C:/"+str(x)+".html"#保存到本地的路径,如果要放到文件夹,一定要提前新建好
#print(imagename)
print("imageurl:"+imageurl)
loupan_html=urllib.request.urlopen(imageurl).read()
loupan_html=str(loupan_html)
loupan_pat='j-triggerlayer">(.+?)</h1>'#<h1 id="j-triggerlayer">金马杰座</h1>
loupan_name=re.compile(loupan_pat).findall(loupan_html)
loupan_name=str(loupan_name)
print(type(loupan_name))
print(sys.getdefaultencoding())
print(loupan_name.encode().decode('utf-8'))

for i in range(1,2):
url="https://dl.fang.anjuke.com/loupan/all/p"+str(i)+"/"#翻页
craw(url,i)
print(i)



...全文
608 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
chuifengde 2017-08-31
  • 打赏
  • 举报
回复
html1=str(html1)改成html1.decode('utf-8')
黄哥Python培训 2017-08-31
  • 打赏
  • 举报
回复
关键点帮你点破一下: urllib.request.urlopen(url).read() 返回值为bytes 类型
黄哥Python培训 2017-08-31
  • 打赏
  • 举报
回复
Python 3 bytes 转str


langzi2050 2017-08-31
  • 打赏
  • 举报
回复
谢谢两位大侠。(拱手)

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧