1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Python爬虫获取网页源代码出现乱码

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

时间:2020-02-03 14:18:50

相关推荐

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

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

import requests# 0.通过如下代码,会发现获取的网页源代码出现乱码url = ''res = requests.get(url).textprint(res)

出现乱码

查看python获得的编码格式

import requests# 0.通过如下代码,会发现获取的网页源代码出现乱码url = ''res = requests.get(url).textprint(res)# 1.编码分析# 1.1 查看Python获得的网页源代码的编码方式,其编码方式为ISO-8859-1url = ''code = requests.get(url).encodingprint('通过Python获得的网页源代码的编码方式为:' + code)

网页获取的格式

按F12在head中查看

发现为utf-8编码需要转码

import requests# 0.通过如下代码,会发现获取的网页源代码出现乱码url = ''res = requests.get(url).textprint(res)# 1.编码分析# 1.1 查看Python获得的网页源代码的编码方式,其编码方式为ISO-8859-1url = ''code = requests.get(url).encodingprint('通过Python获得的网页源代码的编码方式为:' + code)# 1.2 查看网页实际的编码方式,通过F12查看,展开最上方的head标签(head标签里主要用来存储编码方式、网站标题等信息),# 其中<meta charset="编码方式">中存储着网页实际的编码方式,可以看到网页实际的编码方法为utf-8# 2.重新编码及解码url = ''res = requests.get(url).textres = res.encode('ISO-8859-1').decode('utf-8')print(res) # 此时便已经可以解决数据乱码问题了

还有gbk的编码格式

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

# =============================================================================# 5.2 数据乱码常规处理方法 by 王宇韬 代码更新: 资料下载区# =============================================================================import requests# 0.通过如下代码,会发现获取的网页源代码出现乱码url = ''res = requests.get(url).textprint(res)# 1.编码分析# 1.1 查看Python获得的网页源代码的编码方式,其编码方式为ISO-8859-1url = ''code = requests.get(url).encodingprint('通过Python获得的网页源代码的编码方式为:' + code)# 1.2 查看网页实际的编码方式,通过F12查看,展开最上方的head标签(head标签里主要用来存储编码方式、网站标题等信息),# 其中<meta charset="编码方式">中存储着网页实际的编码方式,可以看到网页实际的编码方法为utf-8# 2.重新编码及解码url = ''res = requests.get(url).textres = 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 requestsheaders = {'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 = ''res = requests.get(url).text# res = requests.get(url, headers=headers).text # 这里加headers能获取更多的网页源代码try:res = res.encode('ISO-8859-1').decode('utf-8') # 方法3except:try:res = res.encode('ISO-8859-1').decode('gbk') # 方法2except:res = res # 方法1print(res) # 可以在源代码里搜索“百度”检验爬取成功

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。