爬虫入门笔记

爬虫入门笔记

request的编码问题

问题的提出

一开始,我用request对东方财富网进行了访问,可是得到的结果却是乱码
代码如下:

import requests
r = requests.get('http://www.eastmoney.com/')
print (r.text)

咋没用呢?网页乱码,绝大部分情况都是编码出现了问题

问题的思考

首先编码的概念网上到处都是,这里就不细说了。
此处借用 年轻人——001 的博客来说明一下问题,大家也可以看他的博客。
在这里插入图片描述
我们先看一下系统默认给的编码方式是什么
使用response的encoding方法就行

import requests
r = requests.get('http://www.eastmoney.com/')
print (r.encoding)

在这里插入图片描述
可以看到是ISO-8858-1!而python中有一个自动翻译编码的功能:apparent_encoding,我们来试一下

import requests
r = requests.get('http://www.eastmoney.com/')
print (r.encoding)
print(r.apparent_encoding)

在这里插入图片描述
python给我们识别出的编码方式却是UTF-8-SIG!所以我们知道了,这个网站原本是UTF8编码,而python却错误的使用了ISO编码,进而导致乱码。
所以我们应该将错误的编码转过来。(使用encode和decode方法)

问题的解决
import requests
r = requests.get('http://www.eastmoney.com/')
print (r.encoding)
print (r.apparent_encoding)
print ((r.text.encode(r.encoding).decode(r.apparent_encoding)))
#encode:将response(ISO)转为unicode
#decode:将unicode转为decode(UTF8)
#UTF8和ISO输出的数据类型都是str
#而Unicode输出的数据类型是bytes

在这里插入图片描述问题解决!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值