安迪Python

V1

2022/06/18阅读:9主题:默认主题

06 Response对象的encoding属性修改字符编码格式

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】 下方显示的就是字符编码格式。

7_查看网页的编码格式
7_查看网页的编码格式

爬虫中响应的编码格式可以人工在【网页源代码】中查询,
也可以通过枚举法对三个常用的字符编码格式挨个去试。

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">
8_爬虫的步骤
8_爬虫的步骤

分类:

后端

标签:

Python

作者介绍

安迪Python
V1