鱼C论坛

 找回密码
 立即注册
查看: 1580|回复: 2

[技术交流] 爬虫

[复制链接]
发表于 2018-4-24 20:52:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我在做小甲鱼第53讲时,获取网页编码
这里用了小甲鱼的代码
import urllib.request
import chardet


def main():
    url = input("请输入URL:")

    response = urllib.request.urlopen(url)
    html = response.read()

    # 识别网页编码
    encode = chardet.detect(html)['encoding']

    if encode == 'GB2312':
        encode = 'GBK'

    print("该网页使用的编码是:%s" % encode)




if __name__ == "__main__":
    main()

为什么用快手的url最后编码是Windows-1254,我看了网页上显示的是utf-8
请输入URL:http://live.kuaishou.com
该网页使用的编码是:Windows-1254
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-24 21:14:48 | 显示全部楼层
>>> chardet.detect(b'Hello, world!')
{'encoding': 'ascii', 'confidence': 1.0, 'language': ''}
================================
chardet是一个用来甄别编码的python第三方库。
你看confidetn字段,这里是1.0表示100%,但是并不能保证每次都是100%——总会有失误的时候嘛!再看看你的字段显示是不是1.0,如果不是就不能保证准确解析。

另外,建议使用requests库。使用requests.get(url).encoding进行编码方式的解析。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-4-24 21:45:16 | 显示全部楼层
ABC23 发表于 2018-4-24 21:14
>>> chardet.detect(b'Hello, world!')
{'encoding': 'ascii', 'confidence': 1.0, 'language': ''}
==== ...

恩恩,确实不是1.0
请输入URL:https://live.kuaishou.com
{'encoding': 'Windows-1254', 'confidence': 0.4515685005820004, 'language': 'Turkish'}
使用你说的requests.get("https://live.kuaishou.com").encoding
就可以了,非常感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 03:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表