1、爬取某个GBK编码的网站页面时,发现获取到的信息是这样的
title=ÏÂÔÂÆð´Ó³É¶¼¿ÉÖ±·ÉºÕ¶ûÐÁ»ù È«³Ì½öÐè9Сʱ
2019Äê08ÔÂ08ÈÕ07:40 À´Ô´£ºËÄ´¨ÈÕ±¨
Ô±êÌ⣺ÏÂÔÂÆð ³É¶¼Ö±·ÉºÕ¶ûÐÁ»ù
¡¡¡¡8ÔÂ7ÈÕ£¬ËÄ´¨º½¿Õ¹«Ë¾Í¸Â¶£¬½«ÓÚ9ÔÂ16ÈÕпª³É¶¼Ö±·ÉºÕ¶ûÐÁ»ùº½Ïß¡£½öÐè 9¸öСʱµÄ·ÉÐУ¬Âÿͼ´¿É´Ó³É¶¼Ö±´ï±±Å·µÄ·ÒÀ¼Ê׶¼¡£
¡¡¡¡È¥Ä꣬´¨º½¿ªÍ¨Á˳ɶ¼Ö±·Éµ¤ÂóÊ׶¼¸ç±¾¹þ¸ùµÄº½Ïߣ¬ÎªÔö¼Ó±±Å·º½µã£¬Âú×ã¸ü¶àÂÿͳöÐÐÐèÇ󣬴¨º½½«¸Ãº½Ïß´òÔìΪ³É¶¼¾ºÕ¶ûÐÁ»ù·É¸ç±¾¹þ¸ù¡£¸Ãº½ÏßÿÖÜÁ½°à£¬Ã¿ÖÜÒ»¡¢Îå¸÷Ò»°à£¬¿ÕÖзÉÐÐʱ¼äÔ¼9Сʱ¡£¿ªº½Ç°Èý°à£¬´¨º½ÍƳöÌؼۻúƱ£¬³É¶¼·ÉºÕ¶ûÐÁ»ùÍù·µ×îµÍ²»º¬Ë°500ÔªÆð¡££¨¼ÇÕß ÍõüÁ飩
(Ôð±à£ºÕ»ªÎ¬¡¢¸ßºìϼ)
查了下资料,得到了解决方法
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)
此时的res.text就会采用指定的编码返回输出。个人感觉挺方便的,不过解析模块解析也要花费一定时间,虽然不长,但还是要时间开销。