爬取数据出现乱码的解决方法

爬虫爬取数据出现乱码的解决方法


1.网站源代码中英文全部乱码
可能的解决方法:

1)可能是编码格式不同造成的 在调用get方法后,返回的对象中有两个属性值,分别为:

encodingapparent_encoding,当二者不同时,可能出现乱码,解决办法是encoding的值优先于apparent_encoding,即令:encoding=apparent_encoding
在这里插入图片描述
2)可能是反爬策略调用get方法中的header参数设置问题,比如加入了反爬头部关键字:Accept-Encoding: gzip, deflate, br,则可能出现全局乱码,只需删除这一关键字即可。
在这里插入图片描述
具体原因可能是服务器端在响应请求数据时采用了相应的编码格式(比如:gzip、br)将数据进行压缩后再进行发送,然后浏览器端我们调用的requests方法时会自动帮助我们解压(gzip压缩的等)网页内容,如果这时候我们在params强行加入header头部参数模拟浏览器时,可能会导致解压数据时格式不正确,得到的数据出现乱码

2.出现类似b/x204/ds234/4353类似的乱码文件
可能是由于网站本身数据被压缩为gzip格式的文件,解决方式是在python中引入gzip库,并通过调用decompress(待解压对象).encode(‘utf-8’)将原始数据进行解压后再进行使用

3.只出现中文乱码
可能是编码格式不匹配导致
解决方法1:进入网站界面,查看html源代码,找到head头部中的charset属性,并将其值复制下来,eg:
在这里插入图片描述然后再将该值赋值给r.encoding,即r为调用requests中的get 方法返回的对象,比如:r.encoding =‘gb2312’
解决方法2:直接令r.encoding = r.apparent_encoding
ps:
charset 查看网页中的源代码的编码格式
使用方法:引入import chardet
调用chardet.detect(html)
eg:`在这里插入代码片

 from urllib import request
import chardet
import gzip
if __name__ == '__main__':

    url = 'https://jobs.zhaopin.com/CC375882789J00033399409.html'

    rsp = request.urlopen(url)
    # 按住Ctrl键不送,同时点击urlopen,可以查看文档,有函数的具体参数和使用方法

    html = rsp.read()
    cs = chardet.detect(html)
    print(html)
    print("cs的类型:{0}".format(type(cs)))
    print("监测到的cs数据:{0}".format(cs))
    html = html.decode("utf-8")
    # 意思是监测到就使用监测到的,监测不到就使用utf-8

    print("HTML页面为:\n%s" % html)

`

  • 14
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值