Python3 利用requests抓取網頁原始碼中文亂碼問題(由gb2312編碼引起)
阿新 • • 發佈:2019-01-23
核心問題:
- meta charset = “gb2312”
- requests
- 中文亂碼
- ×îÐÂÏûÏ¢_¡¶ÃλÃÎ÷ÓΡ·µçÄÔ°æ¹Ù·½ÍøÕ¾
以夢幻西遊官網為例
<!DOCTYPE html>
<head>
<meta charset="gb2312" />
<!--This is Git Project From XYQ/xyq-gw-20170104(4899)-->
<title>最新訊息_《夢幻西遊》電腦版官方網站 - 網易西遊題材扛鼎之作</title>
<meta name="keywords" content="《夢幻西遊》電腦版,Q版網遊,人氣網遊,回合制網遊, 網易遊戲,夢幻西遊下載,夢幻西遊官網, 夢幻西遊序列號,最好玩的網遊" />
<meta name="description" content="《夢幻西遊》電腦版,網易回合制網遊旗艦,西遊題材扛鼎之作;3.6億註冊使用者,271萬玩家最高線上,每月有新服開放。人物和畫面超可愛、輕輕鬆鬆交朋友!" />
<meta name="author" content="網易,NetEase Inc." />
<meta name="copyright" content="網易,NetEase Inc." />
<meta name="pmid" content="272711" />
<meta name="editor" content="rosiel" />
<meta name="designer" content="QQ,rain" />
<meta name="front-end technicist" content="Django" />
<meta name="animator" content="hy" />
<link type="text/css" rel="stylesheet" href="http://res.xyq.netease.com/gw/13v1/css/common.css" media="all" />
<style>
.NIE-share1 .NIE-share-more em{top: -17px !important;}
</style>
<!--[if lte IE 8]>
<script charset="gb2312" src="http://res.nie.netease.com/comm/html5/createEle.js"></script>
<![endif]-->
<!-- jquery mix NIE (最新版本)-->
<script charset="gb2312" src="http://res.nie.netease.com/comm/js/jquery(mixNIE).last.js"></script>
<script charset="gb2312" src="http://res.xyq.netease.com/gw/13v1/js/common.js"></script>
</head>
python爬取程式碼
# -*- coding: utf-8 -*-
>>> import requests
>>> url = 'http://xyq.163.com/news/index.html'
>>> r = requests.get(url)
>>> data = r.text
>>> title = data.split('<title>')[1].split(' ')[0]
>>> print(title)
×îÐÂÏûÏ¢_¡¶ÃλÃÎ÷ÓΡ·µçÄÔ°æ¹Ù·½ÍøÕ¾
>>>
解決方案
在獲取網頁內容時
將原檔案轉碼成latin1編碼(使用encode函式)
再解碼成gbk編碼(使用decode函式
即可輸出正確中文
# -*- coding: utf-8 -*-
>>> import requests
>>> url = 'http://xyq.163.com/news/index.html'
>>> r = requests.get(url)
>>> data = r.text.encode("latin1").decode("gbk")
>>> title = data.split('<title>')[1].split(' ')[0]
>>> print(title)
最新訊息_《夢幻西遊》電腦版官方網站
>>>