【学习笔记】python爬虫获取GBK编码网页的转换

1、爬取某个GBK编码的网站页面时,发现获取到的信息是这样的

title=?????e′ó3é???é?±·éo???Dá?ù è?3ì??Dè9D?ê± 2019?ê08??08è?07:40à′?′£o??′¨è?±¨?-±êìa£o?????e 3é???±·éo???Dá?ù ????8??7è?£???′¨o???1???í???£???óú9??16è?D??a3é???±·éo???Dá?ùo????£??Dè 9??D?ê±μ?·éDD£????í?′?é′ó3é???±′?±±?·μ?·òà?ê×???£ ????è¥?ê£?′¨o??aí¨á?3é???±·éμ¤?óê×????±?1t?ùμ?o???£??a???ó±±?·o?μ?£??ú×??ü?à???í3?DDDè?ó£?′¨o?????o???′ò?ì?a3é???-o???Dá?ù·é??±?1t?ù?£??o??????üá?°à£????üò??¢???÷ò?°à£????D·éDDê±????9D?ê±?£?ao??°èy°à£?′¨o?í?3?ì????ú?±£?3é??·éo???Dá?ùíù·μ×?μí2?o??°500?a?e?££¨???? í???áé£?(?e±à£o???a???¢??oì??)

查了下资料,得到了解决方法
res = requests.get(url=article_url) html = res.text.encode('iso-8859-1').decode('gbk')

输出正常
title=下月起从成都可直飞赫尔辛基 全程仅需9小时 2019年08月08日07:40来源:四川日报_原题是:下月起 成都直飞赫尔辛基 8月7日,四川航空公司透露,将于9月16日新开成都直飞赫尔辛基航线。仅需 9个小时的飞行,旅客即可从成都直达北欧的芬兰首都。去年,川航开通了成都直飞丹麦首都哥本哈根的航线,为增加北欧航点,满足更多旅客出行需求,川航将该航线打造为成都经赫尔辛基飞哥本哈根。该航线每周两班,每周一、五各一班,空中飞行时间约9小时。开航前三班,川航推出特价机票,成都飞赫尔辛基往返最低不含税500元起。(采访人员 王眉灵)(责编:章华维、高红霞)

2、更好的方法:chardet模块识别
规范的网站一般可以在响应头中或者html中找到编码标识,但也有特例,无法获取编码信息,此时可以使用该模块,自定义函数:
def GetCharset(content): return chardet.detect(content)['encoding']

使用方法:参数输入为request.content,返回值就是该网页的编码。
import requests url = 'http://www.baidu.com' res = request.get(url) res.encoding = GetCharset(res.content) print(res.text)

【【学习笔记】python爬虫获取GBK编码网页的转换】此时的res.text就会采用指定的编码返回输出。个人感觉挺方便的,不过解析模块解析也要花费一定时间,虽然不长,但还是要时间开销。

    推荐阅读