Python爬虫获取网页源代码出现乱码

2022/1/11 20:03:59

本文主要是介绍Python爬虫获取网页源代码出现乱码,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

发现用python用requests在百度中获得的代码有乱码

import requests
# 0.通过如下代码,会发现获取的网页源代码出现乱码
url = 'https://www.baidu.com'
res = requests.get(url).text
print(res)

在这里插入图片描述
出现乱码

查看python获得的编码格式

import requests
# 0.通过如下代码,会发现获取的网页源代码出现乱码
url = 'https://www.baidu.com'
res = requests.get(url).text
print(res)

# 1.编码分析
# 1.1 查看Python获得的网页源代码的编码方式,其编码方式为ISO-8859-1
url = 'https://www.baidu.com'
code = requests.get(url).encoding
print('通过Python获得的网页源代码的编码方式为:' + code)

在这里插入图片描述
网页获取的格式

按F12在head中查看
在这里插入图片描述
发现为utf-8编码需要转码

import requests
# 0.通过如下代码,会发现获取的网页源代码出现乱码
url = 'https://www.baidu.com'
res = requests.get(url).text
print(res)

# 1.编码分析
# 1.1 查看Python获得的网页源代码的编码方式,其编码方式为ISO-8859-1
url = 'https://www.baidu.com'
code = requests.get(url).encoding
print('通过Python获得的网页源代码的编码方式为:' + code)

# 1.2 查看网页实际的编码方式,通过F12查看,展开最上方的head标签(head标签里主要用来存储编码方式、网站标题等信息),
# 其中<meta charset="编码方式">中存储着网页实际的编码方式,可以看到网页实际的编码方法为utf-8
# 2.重新编码及解码
url = 'https://www.baidu.com'
res = requests.get(url).text
res = res.encode('ISO-8859-1').decode('utf-8')
print(res)  # 此时便已经可以解决数据乱码问题了

还有gbk的编码格式

其它情况的完整代码如下:

# =============================================================================
# 5.2 数据乱码常规处理方法 by 王宇韬 代码更新:www.huaxiaozhi.com 资料下载区
# =============================================================================

import requests
# 0.通过如下代码,会发现获取的网页源代码出现乱码
url = 'https://www.baidu.com'
res = requests.get(url).text
print(res)

# 1.编码分析
# 1.1 查看Python获得的网页源代码的编码方式,其编码方式为ISO-8859-1
url = 'https://www.baidu.com'
code = requests.get(url).encoding
print('通过Python获得的网页源代码的编码方式为:' + code)

# 1.2 查看网页实际的编码方式,通过F12查看,展开最上方的head标签(head标签里主要用来存储编码方式、网站标题等信息),
# 其中<meta charset="编码方式">中存储着网页实际的编码方式,可以看到网页实际的编码方法为utf-8
# 2.重新编码及解码
url = 'https://www.baidu.com'
res = requests.get(url).text
res = res.encode('ISO-8859-1').decode('utf-8')
print(res)  # 此时便已经可以解决数据乱码问题了

# 注意,如果有的网站的实际编码方式为gbk,则在decode解码的时候需要把utf-8换成gbk
# 补充知识点:encode()编码函数与decode()解码函数
# encode()编码函数
res = '华小智'  # 中文字符串
res = res.encode('utf-8')  # encode编码将中文字符串转为二进制
print(res)

# decode()解码函数
res = b'\xe5\x8d\x8e\xe5\xb0\x8f\xe6\x99\xba'  # 二进制字符
res = res.decode('utf-8')  # decode解码将二进制字符转为字符串
print(res)


# 3.数据乱码万金油的解决办法
import requests
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}

url = 'https://www.baidu.com'
res = requests.get(url).text
# res = requests.get(url, headers=headers).text  # 这里加headers能获取更多的网页源代码
try:
    res = res.encode('ISO-8859-1').decode('utf-8')  # 方法3
except:
    try:
        res = res.encode('ISO-8859-1').decode('gbk')  # 方法2
    except:
        res = res  # 方法1
print(res)  # 可以在源代码里搜索“百度”检验爬取成功



这篇关于Python爬虫获取网页源代码出现乱码的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程