这种乱码现象基本上都是编码造成的,我们要转到我们想要的编码,先po一个知识点,嵩天老师在Python网络爬虫与信息提取说到过的:response.encoding是指从HTTP的header中猜测的响应内容编码方式,如果header中不存在charset,则默认编码为ISO-8859-1 ,这样一来某些不规范的服务器返回就必然乱码了;response.apparent_encoding是指从内容中分析出的响应内容编码方式。requests内部的 utils 也提供了一个从返回 body 获取页面编码的函数get_encodings_from_content,这样如果服务器返回的头不含 Charset,再通过 get_encodings_from_content 就可以知道页面的正确编码了。下面是调试的过程:

import requests
from requests.exceptions import RequestExceptiondef get_one_page(url):try:response=requests.get(url)if response.status_code == 200:#print(response.text)print(response.encoding)print(response.apparent_encoding)r=response.textprint(requests.utils.get_encodings_from_content(r)[0])a=r.encode('ISO-8859-1').decode(requests.utils.get_encodings_from_content(r)[0])print(a)print('------------------------------------')b = r.encode('ISO-8859-1').decode(response.apparent_encoding)print(b)return Noneexcept RequestException:return Nonedef main():url = 'http://www.mh160.com/'get_one_page(url)if __name__=='__main__':main()

看图!看图!看图!

# response=requests.get(skip_url,headers=self.headers)
# # print(response.text.encode('ISO-8859-1').decode('utf-8'))
#如果出现乱码,可以直接写下面的通用转换
# html=etree.HTML(response.text.encode(response.encoding).decode(response.apparent_encoding))

如果python抓取网页后用decode解码,报错信息如下:

UnicodeDecodeError: ‘gb2312’ codec can’t decode byte 0xb0 in position 18020: illegal multibyte sequence

推测是网页数据中有错误的字符无法解码,decode有参数errors,设置一下就好啦~

html=etree.HTML(response.text.encode(response.encoding).decode(response.apparent_encoding,errors = 'ignore'))

来源:https://www.jianshu.com/p/b535a9434120

[229]python3的requests类抓取中文页面出现乱码的解决办法相关推荐

  1. php站中文转码在iis 7.5乱码,iis伪静态中文url出现乱码的解决办法

    首先要看下你安装的是IIS rewrite_2.0还是ISAPI_Rewrite 3.x的伪静态插件. 如果你安装的是IIS rewrite_2.0的话,传递的参数都是UTF-8格式的,如果你网站是G ...

  2. Python使用lxml模块和Requests模块抓取HTML页面的教程

    Web抓取 Web站点使用HTML描述,这意味着每个web页面是一个结构化的文档.有时从中 获取数据同时保持它的结构是有用的.web站点不总是以容易处理的格式, 如 csv 或者 json 提供它们的 ...

  3. ZoteroCNKI抓取不到学位论文的解决办法

    如遇到Zotero可以抓取期刊,但抓不到硕博论文(排除了软件环境安装.未登录等问题),可考虑用以下方法解决. 方法如下 下图右击金信封,"扩展选项": "Advanced ...

  4. Eclipes导入的项目中的中文都是乱码的解决办法

    把项目导入Eclipse时,里边的中文全是乱码,试了很多方法,最终总结一下! eclipse之所以会出现乱码问题是因为eclipse编辑器选择的编码规则是可变的.一般默认都是UTF-8或者GBK,当从 ...

  5. Jmeter察看结果树响应数据的中文显示为乱码的解决办法

    问题描述:Jmeter运行结束,察看结果树响应数据的中文显示为乱码 解决办法: 1.找到Jmeter安装目录 bin\jmeter.properties文件,打开文件. 2.查找sampleresul ...

  6. Python练习 requests+BeautifulSoup抓取ZD页面

    import requests from bs4 import BeautifulSoup #保存url列表为文件with open('a.txt', 'w') as f: def url_list( ...

  7. 用requests获取网页源代码 python-Python3使用requests包抓取并保存网页源码的方法

    本文实例讲述了Python3使用requests包抓取并保存网页源码的方法.分享给大家供大家参考,具体如下: 使用Python 3的requests模块抓取网页源码并保存到文件示例: import r ...

  8. python中文爬取网页_Python抓取中文网页

    早就有想法把博客每天的访问流量记下来,刚好现在申请了GAE的应用,又开始学Python,正好拿这个练手.打算先利用Python把访问记录保存在本地,熟悉之后可以部署到GAE,利用GAE提供的cron就 ...

  9. 利用requests库抓取猫眼电影排行

    文章目录 1.抓取目标 2.准备工作 3.抓取分析 4.抓取首页 5.正则提取 6.写入文件 7.整合代码 8.分页爬取 9.运行结果 10.本节代码 最近刚开始了解爬虫,学习了一下基本库的使用.跟着 ...

最新文章

  1. 【图像分割应用】医学图像分割(三)——肿瘤分割
  2. Python+Matplotlib+LaTeX玩转数学公式
  3. JStorm2.1.1集群的安装和使用
  4. css3是什么 ptml_CSS3
  5. 测试驱动开发 测试前移_测试驱动开发:它是什么,什么不是。
  6. 论文浅尝 - WWW2020 | 从自然语言交互中提取开放意图
  7. IDEA :Warning:java: 源值1.5已过时, 将在未来所有发行版中删除
  8. Lua笔记4 闭包、迭代器
  9. Oracle Sql Developer 改成英文界面
  10. 谈谈基于SQL Server 的Exception Handling[中篇]
  11. gdb 调试打印完整字符串
  12. 基于matlab的图像复原,MATLAB在图像复原中的应用
  13. 通过注册表文件进行配置WSUS自动更新
  14. 计算机三级要英语词汇,大学英语三级常考词汇
  15. DES加密解密-java
  16. html 给div设置边框颜色代码,div边框颜色设置
  17. Zabbix学习笔记(七)---网络波动监控
  18. Android手势密码探索
  19. 人工智能数学基础--概率与统计7:学习中一些术语的称呼或表示变化说明以及独立事件的一些补充推论
  20. TM1621数码管驱动

热门文章

  1. 解决Error:All flavors must now belong to a named flavor dimension.
  2. python实现外星人入侵——3.事件分析
  3. Biotin/生物素-蛋白交联剂/CHO aldehyde醛基乙醛-蛋白交联剂/OPSS邻吡啶二硫巯基吡啶-蛋白交联剂
  4. NFT宝典:你需要知道NFT的术语和定义
  5. 提供良好客户服务的5大原则
  6. 云计算架构中的Iaas、Paas、SaaS详解
  7. python制作雷达图_如何利用Python matplotlib绘制雷达图
  8. 修改latex表格内容无衬线字体
  9. Kafka 压缩、限流和 SASL_PLAIN 、 SASL_SCRAM-SHA-256简单认证
  10. 易诚互动在创业板更新招股书:上半年出现亏损,极其依赖阿里云