爬取数据出现乱码的解决方法
爬虫爬取数据出现乱码的解决方法
1.网站源代码中英文全部乱码
可能的解决方法:
1)可能是编码格式不同造成的 在调用get方法后,返回的对象中有两个属性值,分别为:
encoding、apparent_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-8print("HTML页面为:\n%s" % html)
`
爬取数据出现乱码的解决方法相关推荐
- python爬取网页有乱码怎么解决_Python爬取网页requests乱码
**之前有在裁判文书上爬取数据,这段时间重新运行爬虫后发现无法获取网页数据, 找了一下发现requests网页源码返回的是乱码** (如下截取一部分返回的数据: 不知道是不是网站对网页内容进行了加密, ...
- php mysql 读取中文数据的函数_php读取mysql中文数据出现乱码的解决方法
以下是对php读取mysql中文数据出现乱码问题的解决方法进行了介绍,需要的朋友可以过来参考下 1.PHP页面语言本身的编码类型不合适,这时候,你直接在脚本中写的中文肯定是乱码,不用说数据库了 解决方 ...
- Python3爬取网页信息乱码怎么解决?(更新:已解决)
更新:乱码问题已经解决了. 将下面代码中的红色部分改为下面这样就不会出现个别职位信息乱码的情况了. soup2 = BeautifulSoup(wbdata2, 'html.parser',from_ ...
- requests爬取猫眼电影403错误解决方法
原代码如下: import requests from requests.exceptions import RequestExceptiondef one_page_code(url):try:pa ...
- python爬取网页有乱码怎么解决_python - 爬虫获取网站数据,出现乱码怎么解决。...
问 题 #!/usr/bin/python # -*- coding: utf-8 -*- import urllib2 import re import HTMLParser class WALLS ...
- 从前台获取的数据出现乱码的解决方法
使用URLDecoder.decode(string, "utf-8")改变编码 ①Form.name = URLDecoder.decode(Form.name, "u ...
- Python:爬取数据出现response.status_code为403解决方法
目录 前言 1. 原理 2. 代码 前言 出现403的返回结果 主要是有些服务器为了防止访问量过大,承受服务器的压力,或者是拒绝你的访问.服务器接收到这个信息,理应返回了这个403的信息 在前一块的代 ...
- 爬虫爬取数据时,网页响应码返回404问题的解决方法
爬虫报404问题: 在进行爬虫爬取数据的过程中,使用语句: r = requests.get(url, timeout=60, headers=headers, stream=True) # prin ...
- 爬虫爬取数据时各种中文乱码问题
学爬虫有一段时间了,期间总是觉得内容编码会傻傻分不清楚,尤其是直接网页拿数据的时候,遇见中文有时候特别麻烦,看大神介绍的东西太多,只记下了处理方式,仅供参考,不对地方欢迎大家指正~~ 一般请求返回内容 ...
最新文章
- 电源适配器变压器计算与元器件选型、细,全!【上篇-适配器设计计算23步骤】...
- Linux部署Node.js应用
- boost::spirit模块将 QString 数据类型用作 Qi 属性的测试程序
- Apache负载均衡设置方法: mod_proxy
- vue生成包报错error from UglifyJs
- 华农软件工程实验报告_华南农业大学的软件工程怎么样?
- Android 系统(184)---Android APN 配置
- c语言 除法小数点怎么写,高精度除法小数点位数
- Nancy跨平台开发总结(六)三层架构之Token认证的Rest API
- 042 第一章 简介
- java代码实现PDF转DOC文档
- 基于模糊聚类的图像分割
- MySQL 8 复制(一)——异步复制
- 搜索引擎优化有哪些方法?分享SEO搜索引擎优化的12点经验
- Swagger简单使用之从入门到精通
- 孟母三迁:学习中环境对人的影响特别的重要
- SharedPreferences的使用与Sqlite的使用
- 用Bootstrap框架制作下拉列表
- 下载工具MLDonkey的优化设置
- 安卓手机客户端与服务器纯纯socket实现文件下载+断点续传