爬虫中遇到的编码问题

本文介绍了解决爬虫过程中遇到的网页乱码问题的方法。通过对文本编码格式的识别和修正,成功解决了爬取数据时出现的乱码情况,并分享了request中output content和text的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

给大一的小朋友准备了爬虫任务,又准备了一个比较坑的网站,不过终于解决了问题,顺带涨了知识~

爬取过程

爬取数据时发现数据乱码,如图所示
![此处输入图片的描述][1]
通过获取文本编码格式,发现text编码格式为iso-8859-1

import requests
w = requests.get("http://58921.com/alltime/2013", timeout=10)
print w.encoding

再返回该网站查看,发现网站header头没有指定编码,如图:
![此处输入图片的描述][2]

解决方法

所以针对以上的问题,编码格式的修正方法如下:

# 这样就不乱码
w = requests.get("http://58921.com/alltime/2013", timeout=10)
html = w.content
print html


# 也可以这样做
w = requests.get("http://58921.com/alltime/2013", timeout=10)
w.encoding = 'utf-8'
html = w.text
print html

![此处输入图片的描述][3]

小知识

request中输出content和text的区别:

text返回的是Unicode型的数据。
content返回的是bytes型也就是二进制的数据。
也就是说,在使用r.content的时候,已经自带了如下转换

html = bytes(bytearray(html, encoding='utf-8'))
content-type解析

在此链接中有详细说明,可以参考:https://www.cnblogs.com/ajianbeyourself/p/4592798.html
[1]: http://oh4g14vir.bkt.clouddn.com/乱码图.png
[2]: http://oh4g14vir.bkt.clouddn.com/网站header.jpg
[3]: http://oh4g14vir.bkt.clouddn.com/不乱码图.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值