码迷,mamicode.com
首页 > 编程语言 > 详细

python爬取html中文乱码

时间:2019-09-08 16:45:01      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:ons   网址   meta   编码   port   ash   script   rdf   int   

环境:

python3.6

爬取网址:https://www.dygod.net/html/tv/hytv/

爬取代码:

import requests
url = ‘https://www.dygod.net/html/tv/hytv/‘
req = requests.get(url)
print(req.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=gb2312">
<title>µçÊÓ¾ç / »ªÓïµçÊÓ¾ç_µçÓ°ÌìÌÃ-ѸÀ×µçÓ°ÏÂÔØ</title>
<meta name="keywords" content="ѸÀ×µçÓ°£¬Ñ¸À×ÏÂÔØ£¬Ãâ·ÑµçÓ°">
<meta name=description content="Ãâ·ÑѸÀ×µçÓ°ÏÂÔØ,ѸÀ×ÏÂÔØ£¬×îºÃµÄѸÀ×ÏÂÔØÕ¾£¬ÊÇÓ°ÃÔµÄÊ×Ñ¡">
<link href="/css/dygod.css" rel="stylesheet" type="text/css" />

如上,title内容出现乱码,自己感觉应该是编码的问题,但是不知道如何解决,于是上网查看

参考网址:

https://www.cnblogs.com/bw13/p/6549248.html

问题找到,原来是reqponse header只指定了type,但是没有指定编码(一般现在页面编码都直接在html页面中),查找原网页可以看到

技术图片

 

 

在content-type属性中,未设置编码格式,正常设置如下

技术图片

 

 所以使用默认的编码格式

《HTTP权威指南》里第16章国际化里提到,如果HTTP响应中Content-Type字段没有指定charset,则默认页面是‘ISO-8859-1‘编码。

这处理英文页面当然没有问题,但是中文页面,就会有乱码了!

print(req.apparent_encoding)

结果为:GB2312

所以只需要加上

req.encoding = req.apparent_encoding

这个就可以了!

代码:

import requests
url = ‘https://www.dygod.net/html/tv/hytv/‘
req = requests.get(url)
req.encoding = req.apparent_encoding
print(req.text)

结果中文就不会乱码了

python爬取html中文乱码

标签:ons   网址   meta   编码   port   ash   script   rdf   int   

原文地址:https://www.cnblogs.com/bingchuan-study/p/11487164.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!