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

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就会采用指定的编码返回输出。个人感觉挺方便的,不过解析模块解析也要花费一定时间,虽然不长,但还是要时间开销。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值