安
安迪Python
V1
2022/06/17阅读:11主题:默认主题
05 Response对象的text属性可以获取HTML代码
05 Response对象的text属性可以获取HTML代码
5.1 Response.text 可以获取HTML代码
之前说过浏览器向服务器发送请求,服务器会给浏览器一个响应。
通常服务器返回给浏览器的响应内容,
主要包含了响应状态码、响应头和响应体等信息。
响应的正文数据都在响应体中。
当我们人工访问网站成功后,我们看到的是布局好的图片和文字。
当Python访问网站成功后,我们查看它的text属性,
我们看到的是网页的 HTML 代码。
服务器返回响应的正文数据都在响应体中。
响应体=网页的 HTML 代码
调用text属性相当于人工访问网页时的查看【网页源代码】。
查看网页源代码有2种方式:
方法1:按【F12】快捷键;
方法2:鼠标右键,然后选择【查看网页源代码】。
5.1.1 访问百度网页
# 导入访问网页要用的库
import requests
# 申明一个变量存储网址
# 网址是一个字符串变量,注意网址前后都必须有引号
url = 'https://www.baidu.com/'
# 用requests.get(网址)访问网页
# 库名.函数名(要访问的网址)
print('*requests.get(url)函数得到的是一个Response对象*')
print(requests.get(url),'\n')
print('*打印Response对象的status_code属性,即状态码*')
print(requests.get(url).status_code,'\n')
print('*type查看Response对象的text属性的类型*')
print(type(requests.get(url).text),'\n')
print('*打印Response对象的text,即html代码*')
print(requests.get(url).text)
【终端输出】
*requests.get(url)函数得到的是一个Response对象*
<Response [200]>
*打印Response对象的status_code属性,即状态码*
200
*type查看Response对象的text属性的类型*
<class 'str'>
*打印Response对象的text,即html代码*
<!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>
<div id=head>
<div class=head_wrapper>
注意:因篇幅受限,上述HTML代码仅截取部分内容。
代码运行后,我们可以看到 requests.get(url).text 可以得到HTML代码的字符串形式。
但我们发现得到的HTML代码是一堆我们看不懂的乱码。
出现上述问题的原因主要是字符编码格式的问题。
在Python中requests库默认的字符编码是英文的。
我们这里访问的百度网页是中文网页,所以出现了我们看不懂的乱码。
但我们只需要把字符编码格式要设置为中文的,我们就能得到我们能看懂的HTML代码了。
5.1.2 访问优美图库
# 导入访问网页要用的库
import requests
# 申明一个变量存储网址
# 网址是一个字符串变量,注意网址前后都必须有引号
url = 'https://www.umei.cc/'
# 用requests.get(网址)访问网页
# 库名.函数名(要访问的网址)
print('*requests.get(url)函数得到的是一个Response对象*')
print(requests.get(url),'\n')
print('*打印Response对象的status_code属性,即状态码*')
print(requests.get(url).status_code,'\n')
print('*type查看Response对象的text的类型*')
print(type(requests.get(url).text),'\n')
print('*打印Response对象的text属性,即html代码*')
print(requests.get(url).text)
【终端输出】
*requests.get(url)函数得到的是一个Response对象*
<Response [200]>
*打印Response对象的status_code属性,即状态码*
200
*type查看Response对象的text的类型*
<class 'str'>
*打印Response对象的text属性,即html代码*
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1">
<meta name="applicable-device" content="pc,mobile">
<title>ãä¼ç¾å¾åºãç¾å
5.2 总结

作者介绍
安
安迪Python
V1