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爬虫获取网页源代码出现乱码的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-03用FastAPI掌握Python异步IO:轻松实现高并发网络请求处理
- 2025-01-02封装学习:Python面向对象编程基础教程
- 2024-12-28Python编程基础教程
- 2024-12-27Python编程入门指南
- 2024-12-27Python编程基础
- 2024-12-27Python编程基础教程
- 2024-12-27Python编程基础指南
- 2024-12-24Python编程入门指南
- 2024-12-24Python编程基础入门
- 2024-12-24Python编程基础:变量与数据类型