06 Response对象的encoding属性修改字符编码格式
文章目录
6.1 常见的中文字符编码格式
当我们调用Response对象的text属性后,
响应的内容暨返回的html代码有时候是乱码。
这时我们将Response对象的encoding属性设置为中文字符的编码格式,
响应内容就可以正常显示了。
encoding英 [ɪnˈkəʊdɪŋ]:编码。
常用的中文字符编码格式有以下三种:
encoding = ‘gbk’
encoding = ‘utf-8’
encoding = ‘utf-8-sig’
不懂字符编码格式的可以百度了解。
6.2 查看网页的编码格式
步骤1:打开开发者工具
方法1:按【F12】快捷键打开;
方法2:鼠标右键,然后选择【查看网页源代码】。
步骤2:鼠标点击【控制台】或【Console】。
步骤3:在最下方的>前输入【document.charset】 下方显示的就是字符编码格式。
爬虫中响应的编码格式可以人工在【网页源代码】中查询,
也可以通过枚举法对三个常用的字符编码格式挨个去试。
6.3 r.encoding = ‘uft-8’ 修改字符编码格式
6.3.1 访问百度网页
# 导入访问网页要用的库
import requests
# 申明一个变量存储网址
# 网址是一个字符串变量,注意网址前后都必须有引号
url = 'https://www.baidu.com/'
print('*requests.get(url)函数得到的是一个Response对象*','\n')
# 用requests.get(网址)访问网页
# 库名.函数名(要访问的网址)
# 发送请求,并把响应结果赋值给变量r
r = requests.get(url)
print('*打印Response对象的status_code属性,即状态码*')
print(r.status_code,'\n')
# 将响应内容的字符编码格式设置为utf-8
r.encoding = 'utf-8'
# 调用Response对象的text属性,获取响应内容
r_text = r.text
print('*type查看Response对象的text的类型*')
print(type(r_text ),'\n')
print('*打印响应内容*','\n',r_text)
【终端输出】
*requests.get(url)函数得到的是一个Response对象*
*打印Response对象的status_code属性,即状态码*
200
*type查看Response对象的text的类型*
<class 'str'>
*打印响应内容*
<!DOCTYPE html>
<!--STATUS OK-->
<html>
<head>
<meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer>
<link rel=stylesheet
type=text/css
href=https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/bdorz/baidu.min.css>
<title>百度一下,你就知道</title>
</head>
<body link=#0000cc>
<div id=wrapper>
【温馨提示】篇幅受限,HTML代码仅显示部分内容。
当我们用r.encoding = 'utf-8’将响应内容的字符编码格式设置为utf-8后,
然后调用r对象的text属性,我们得到的就是我们能看懂的HTML代码了。
6.4 总结
6.4.1. 语法总结
import requests
url = 'https://www.baidu.com/'
r = requests.get(url) # 获取网页: 库.函数(参数)得到一个response对象
r.status_code # 对象.属性 r.status_code
r.encoding = 'utf-8' # 对象.属性 r.encoding = 'utf-8' 注意字符编码要放在引号里
r.text # 对象.属性 r.text
requests.get(url)得到一个response对象
response对象的3个属性:
对象.属性 r.status_code
对象.属性 r.encoding = ‘utf-8’ 注意字符编码要放在引号里
对象.属性 r.text
6.4.2. 获取网页的步骤
爬虫的第一步是获取网页。
获取网页主要有以下6步:
1.找到要爬取的网址;
2.找到网站的字符编码格式;
3.发送网络请求;
4.打印状态码检验请求是否成功;
5.修改字符编码格式;
6.查看HTML代码。
6.4.3. 访问中国文库网
# 写代码时通常把要用的库写在最上方
# 导入访问网页要用的库
import requests
# 1.找到要爬取的网址:
url = 'https://www.chinawenwang.com/'# 网址是一个字符串变量,注意网址前后都必须有引号
# 2.找到网站的编码格式:utf-8
# 3.发送网络请求;
r = requests.get(url) # 用requests.get(网址)访问网页
# 4.打印状态码检验请求是否成功
print(r.status_code,'\n') #Response对象的status_code属性可以获取响应状态码
#5.修改字符编码格式;
r.encoding = 'utf-8' #encoding = 'uft-8' 修改字符编码格式
# 6.查看HTML代码
print(r.text)
【终端输出】
200
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<base href="/" />
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta charset="utf-8">
<title>中国文库网-教育资源网,范文,语文,范文大全,论文,论文范文</title>
<meta name="keywords" content="中国文库网-教育资源网、范文、美文、经典美文、作文、诗歌">
<meta name="description" content="中国文库网-教育资源网为广大用户提供:范文、教案、课件、美文、作文等等一系列常用范文。">
<link rel="stylesheet" href="/statics/css/cj_css/zhuye_style.css">
<link rel="stylesheet" href="/statics/css/cj_css/font-awesome.min.css">
<link rel="stylesheet" href="/statics/css/cj_css/bootstrap.css">
<link rel="stylesheet" href="/statics/css/cj_css/style.css">
<link rel="stylesheet" href="/statics/css/cj_css/common.css">