import wad.detection
import cchardet
import requests
url='https://www.baidu.com'
#查看网站所用的技术
det=wad.detection.Detector()
print(det.detect(url))#使用cchardet检测网页编码类型
html=requests.get(url)
result=cchardet.detect(html.content)
print(result)
html.encoding=result['encoding']
print(html.encoding)#查看网站所有者的信息??? 不可用
# import whois
# imagination=whois.whois("www.douban.com")
# print(imagination)运行结果:
{'https://www.baidu.com/': [{'app': 'jQuery', 'ver': '1', 'type': 'JavaScript Libraries'}]}
{'encoding': 'UTF-8', 'confidence': 0.9900000095367432}
UTF-8
查看编码方法二(chardet):

requests的chardet:

data=requests.get(url)
print(chardet.detect(data.content))运行结果:
{'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}

urllib的chardet:

import urllib
from urllib import  requestres=request.Request(url)
data=request.urlopen(res)
print(chardet.detect(data.read()))
!!不能写成:
(print(chardet.detect(data.read().decode('utf-8')))
运行结果:
{'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}
查看编码方法三(requests):
import requests
data=requests.get(url)
print(data.encoding)
print(data.apparent_encoding)
#查询网页的实际编码
#request.utls.get_encodings_from_content(response.text)[0]
print(requests.utils.get_encodings_from_content(data.text))
print(requests.utils.get_encoding_from_headers(data.headers))执行结果:
ISO-8859-1
utf-8
['utf-8']
ISO-8859-1

Response对象有猜测的编码方式和真实的编码方式,encoding和apparent_encoding
requests会使用响应头中Content-Type的charset类型来进行解码得到data对象的text属性的值。若无法得到charset的值,那么requests会默认使用ISO-8859-1的编码格式,这样的话如果网页有中文就无法正常显示。
apparent_encoding能分析出真正的编码
反例:

print(requests.utils.get_encoding_from_headers(data.headers))
print(data.headers['Content-Encoding'])
print(data.headers)运行结果:
ISO-8859-1
gzip
{'Cache-Control': 'private, no-cache, no-store, proxy-revalidate, no-transform', 'Connection': 'keep-alive', 'Content-Encoding': 'gzip', 'Content-Type': 'text/html', 'Date': 'Fri, 24 Sep 2021 02:56:06 GMT', 'Last-Modified': 'Mon, 23 Jan 2017 13:27:52 GMT', 'Pragma': 'no-cache', 'Server': 'bfe/1.0.8.18', 'Set-Cookie': 'BDORZ=27315; max-age=86400; domain=.baidu.com; path=/', 'Transfer-Encoding': 'chunked'}加了请求头:
url="https://www.baidu.com"
header={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
import cchardet
import  chardet
import requests
data=requests.get(url,headers=header)
print(data.encoding)
print(data.apparent_encoding)print(requests.utils.get_encodings_from_content(data.text))
print(requests.utils.get_encoding_from_headers(data.headers))
print(data.headers['Content-Encoding'])
print(data.headers)utf-8
utf-8
['utf-8']
utf-8
gzip
{'Bdpagetype': '1', 'Bdqid': '0xa6b23a4a00001c33', 'Cache-Control': 'private', 'Connection': 'keep-alive', 'Content-Encoding': 'gzip', 'Content-Type': 'text/html;charset=utf-8', 'Date': 'Fri, 24 Sep 2021 03:08:12 GMT', 'Expires': 'Fri, 24 Sep 2021 03:07:36 GMT', 'P3p': 'CP=" OTI DSP COR IVA OUR IND COM ", CP=" OTI DSP COR IVA OUR IND COM "', 'Server': 'BWS/1.1', 'Set-Cookie': 'BAIDUID=4E3F7D5FB1ABBC456994F37E8359A1EF:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com, BIDUPSID=4E3F7D5FB1ABBC456994F37E8359A1EF; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com, PSTM=1632452892; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com, BAIDUID=4E3F7D5FB1ABBC452B179B0C1AAECB4D:FG=1; max-age=31536000; expires=Sat, 24-Sep-22 03:08:12 GMT; domain=.baidu.com; path=/; version=1; comment=bd, BDSVRTM=0; path=/, BD_HOME=1; path=/, H_PS_PSSID=34644_34441_34068_31254_34551_34584_34106_26350_34627_34424_22160_34691_34675; path=/; domain=.baidu.com', 'Strict-Transport-Security': 'max-age=172800', 'Traceid': '1632452892045537332212011727245652532275', 'X-Frame-Options': 'sameorigin', 'X-Ua-Compatible': 'IE=Edge,chrome=1', 'Transfer-Encoding': 'chunked'}
查看编码方法四(urllib.request):
import urllib
from urllib import  requestres=request.Request(url)
data=request.urlopen(res)
print(data.headers)运行结果:
Bdpagetype: 1
Bdqid: 0x8be0aba3001d6028
Cache-Control: private
Content-Type: text/html;charset=utf-8
Date: Fri, 24 Sep 2021 02:45:07 GMT
Expires: Fri, 24 Sep 2021 02:44:57 GMT
P3p: CP=" OTI DSP COR IVA OUR IND COM "
P3p: CP=" OTI DSP COR IVA OUR IND COM "
Server: BWS/1.1
Set-Cookie: BAIDUID=203CF8DE7E836247AFA410E8AF44297A:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: BIDUPSID=203CF8DE7E836247AFA410E8AF44297A; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: PSTM=1632451507; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: BAIDUID=203CF8DE7E8362478857F5D88A8C0B15:FG=1; max-age=31536000; expires=Sat, 24-Sep-22 02:45:07 GMT; domain=.baidu.com; path=/; version=1; comment=bd
Set-Cookie: BDSVRTM=0; path=/
Set-Cookie: BD_HOME=1; path=/
Set-Cookie: H_PS_PSSID=34647_34068_31254_34551_34524_34585_34504_26350_34725_34425_34691; path=/; domain=.baidu.com
Traceid: 1632451507035516877810079244682625114152
Vary: Accept-Encoding
Vary: Accept-Encoding
X-Frame-Options: sameorigin
X-Ua-Compatible: IE=Edge,chrome=1
Connection: close
Transfer-Encoding: chunked

总结:

查看网页的编码方法:

序号 方法 requests urllib.request
1 cchardet html=requests.get(url)
result=cchardet.detect(html.content)
print(result)
html.encoding=result[‘encoding’]
print(html.encoding)
res=request.Request(url,headers=header)
data=request.urlopen(res)
print(cchardet.detect(data.read()))
2 chardet 同上 同上
3 headers ①data.encoding
②data.apparent_encoding
③requests.utils.get_encodings_from_content(data.text)
④requests.utils.get_encoding_from_headers(data.headers)
⑤data.headers[‘Content-Type’]
data.headers([‘Content-Type’])
  • 关于text和content:
    text自动解码,会因为解码猜测错误出现乱码
    content记录的是原始的二进制字节流,通常用‘utf-8’解码

Wad和cchardet相关推荐

  1. sap wad_使用网真和WAD热部署Kubernetes

    sap wad 在Kubernetes环境中测试企业应用程序时,更改,重新打包和重新部署应用程序的周转率可能会很高. 网真旨在通过将本地运行的进程代理到我们的Kubernetes集群中来缓解这种情况, ...

  2. 使用网真和WAD热部署Kubernetes

    在Kubernetes环境中测试企业应用程序时,更改,重新打包和重新部署应用程序的周转可能变得非常高. 网真旨在通过将本地运行的进程代理到我们的Kubernetes集群中来减轻这种情况,就像本地进程是 ...

  3. 通过WAD和Docker热部署Java Enterprise

    我已经录制了一个视频,该视频介绍了如何使用Adam Bien和Docker容器使用Watch and Deploy (WAD)来最大程度地缩短开发周转时间. WAD工具监视文件更改,并将重新构建我们的 ...

  4. nds文件解包_下載wwpacker 1.84 更新 給wad解包和封包的工具

    警告: 使用這篇文章提及的方法及工具有一定風險, 最壞情況有可能令你的Wii變全磚. 如有任何損失, 本人概不負責. 如你不清楚那些工具的用途及用法, 請不要隨便使用或修改.[ 所需工具 ] wwpa ...

  5. 百度安全的WAD试用体验报告

    最近互联网安全事件频出,因此公司也新上了一些安全防护产品,上周刚刚部署完WAD,目前还是试用阶段,也来说说感受. WAD 全称WEB-APT-DEFENCE,中文名称"WEB高级威胁感知&q ...

  6. 百度成立小度蓝牙联盟,DMA+小度App打造蓝牙语音风口

    人机交互经历了三个阶段键鼠.触屏和语音交互.在国外,谷歌.亚马逊.苹果等巨头的竞争已经到达白热化状态:在国内,百度的DuerOS正是这方面的一位大玩家. 在技术发展的各个时代中,提前入局的厂商,必然能 ...

  7. “掘金”金融AI落地,英特尔趟出一套通关攻略

    有人说,金融业是最大的AI应用场景,但不管怎样,不可否认的事实是金融业已经从数字化走向AI化. 某种程度上,AI与金融业有着天然的契合性:其一,金融业本身就是以数据为基本元素的行业,它为AI的模型训练 ...

  8. 值得收藏!基于激光雷达数据的深度学习目标检测方法大合集(下)

    作者 | 黄浴 来源 | 转载自知乎专栏自动驾驶的挑战和发展 [导读]在近日发布的<值得收藏!基于激光雷达数据的深度学习目标检测方法大合集(上)>一文中,作者介绍了一部分各大公司和机构基于 ...

  9. 出身清华,大神朱俊彦再出GauGAN:AI让你变身神笔马良

    参加 2019 Python开发者日,请扫码咨询 ↑↑↑ 作者 | Just 出品 | AI科技大本营(ID:rgznai 100) 一次 TED 演讲中,前锤子科技设计总监罗子雄分享如何入门学设计的 ...

  10. 百度Apollo发布海量自动驾驶数据集,还有两项重磅挑战赛

    作者 | 费棋 近日, ApolloScape 宣布开放了大规模自动驾驶数据集. 它是 Apollo 自动驾驶项目的一个研究型项目,旨在促进自动驾驶的各方面创新,号称是世界上最大自主驾驶技术开源数据集 ...

最新文章

  1. 格式化显示在Label控件中的金额格式文本 (2)
  2. linux查看磁盘挂载的三种方法
  3. 【CentOS 7笔记】cp、mv、文档查看方式
  4. 发布!天池布匹疵点检测大赛解决方案与Baseline(acc:85%左右,mAP:52%左右)
  5. [Altera在线教学].Altera SERDES应用教学,2小时10分钟,172张胶片
  6. 2018年php框架,2018年的7个热门网站开发框架
  7. Mocha BSM基础架构管理——Windows主机监控
  8. 电脑同时安装python2和3_电脑上同时安装Python2和Python3
  9. Java的数据类型转换
  10. vbs实现微信自动发送消息功能
  11. 【阅读笔记】BI系统介绍及建设思路
  12. mysql ipv4转ipv6_从IPv4到IPv6过渡
  13. SRAM and DRAM
  14. Day2-开发环境搭建——百问网7天物联网智能家居
  15. 帝国cms html5 编辑器,帝国cms后台编辑器自动排版插件
  16. R语言RSelenium包爬取动态网页数据前期准备(环境配置)-连载NO.01
  17. Springboot电商项目前后端搭建
  18. 魔方四阶玩法[图解]
  19. 科普系列:AUTOSAR与OSEK网络管理比较(下)
  20. hadoop发行商介绍:Hortonworks

热门文章

  1. 三星笔记本按f几进入BIOS节俭设置U盘启动
  2. 【渝粤教育】国家开放大学2018年春季 8660-21T农科化学基础知识 参考试题
  3. 在Nginx中设置反向代理缓存
  4. 微软人脸识别android,人脸识别的概念 - Azure Cognitive Services | Microsoft Docs
  5. Spark性能优化 (2) | 算子调优
  6. 微信jsApi调用失效的相关问题
  7. python文件大小大于占内存_Python读取大文件的坑“与内存占用检测
  8. 织梦php网站修改教程,dedecms织梦模板源代码修改教程
  9. 信息安全工程师备考——信息安全基础(自用笔记)
  10. 剑指offer:合并连个有序链表