Python | 爬取网站中文乱码问题

问题描述

response = utils.send_request('http://www.crha.cn/gzdt.html')
print(response.text)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>å·¥ä½å¨æâ中å½ç ç©¶åå»é¢å­¦ä¼</title>
<meta name="Keywords" content="å·¥ä½å¨æ,中å½ç ç©¶åå»é¢å­¦ä¼,ç ç©¶åå»é¢å­¦ä¼,ç ç©¶åå»é¢,ç ç©¶åå»é¢å»ºè®¾" />
<meta name="Description" content="中å½ç ç©¶åå»é¢å­¦ä¼æ¯å¸®å©ç ç©¶åå»é¢æ建â临åºé®é¢âå®éªç ç©¶â临åºæ²»çâ循ç¯æ°æºå¶ï¼å½¢æå»è¯ç»åãå»å·¥ç»åãåºç¡ä¸ä¸´åºç»åãç ç©¶ä¸è½¬åç¸éå¥çç§æåæ°æ¨¡å¼ï¼ä¿è¿ç ç©¶åå»é¢æ为çé¾å±éçççè¯çåºå°ãé«æ°è¯ç©è®¾å¤çç ååºå°ãåè¿å»çææ¯çåæ°åºå°åå»å­¦ç§æä¿¡æ¯ç交æµåºå°ã" />
<meta http-equiv="x-ua-compatible" content="ie=emulateie7" />
<link href="/Css/Style.css" rel="stylesheet" type="text/css" />
</head>
...

原因分析

Python 终端的编码方式是 UTF-8 ,而 HTML 编码方式并不是 UTF-8 (可通过 response.encoding 查询页面编码格式),所以中文产生了乱码

解决方案

response = utils.send_request('http://www.crha.cn/gzdt.html')
print(response.encoding)  # 1.查询页面的编码方式,此处为 ISO-8859-1

print(response.text.encode('ISO-8859-1').decode('utf-8'))  # 2.解码再编码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>工作动态—中国研究型医院学会</title>
<meta name="Keywords" content="工作动态,中国研究型医院学会,研究型医院学会,研究型医院,研究型医院建设" />
<meta name="Description" content="中国研究型医院学会是帮助研究型医院构建“临床问题―实验研究―临床治疗”循环新机制,形成医药结合、医工结合、基础与临床结合、研究与转化相配套的科技创新模式,促进研究型医院成为疑难危重病症的诊疗基地、高新药物设备的研发基地、先进医疗技术的创新基地和医学科技信息的交流基地。" />
<meta http-equiv="x-ua-compatible" content="ie=emulateie7" />
<link href="/Css/Style.css" rel="stylesheet" type="text/css" />
</head>
...

encode与decode函数

同步更新:https://www.jianshu.com/u/3925a970afc3

转载于:https://my.oschina.net/u/3946357/blog/3077518

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值