福建省建设信息网站,重庆招考信息网,外贸官网建站,马来西亚网站建设前言:
当涉及到网页编码问题时#xff0c;经常会遇到不同页面使用不同编码方式的情况。这可能导致在解析页面时出现乱码#xff0c;使我们无法正确获取页面内容
正文: 网页的编码问题:
在处理网页编码问题之前#xff0c;我们需要了解一些基础知识。网页中的编码方式通常…前言:
当涉及到网页编码问题时经常会遇到不同页面使用不同编码方式的情况。这可能导致在解析页面时出现乱码使我们无法正确获取页面内容
正文: 网页的编码问题:
在处理网页编码问题之前我们需要了解一些基础知识。网页中的编码方式通常在页面的头部信息中声明例如Content-Type响应头。然而有些页面的实际编码与声明的编码不匹配这可能导致解析器无法正确解码页面内容。而解析工具如XPath解析器可能无法正确处理特殊的HTML实体如nbsp;从而导致解析乱码。
如图:
问题分析:
现在挺多的网页在写页面的时候,不同页面用了不同的编码; 导致如果把encoding静态 的话就会出现乱码,以至于无法成功解析到页面;
解决问题:
一开始,我想的是无非就是utf-8/gbk等几个编码,换一换就好了! 后来,实在是被千变万化的编码搞得心烦,索性:
#正常请求url
response requests.get(https://example.com,headersheaders)
#用获取到的encoding 来转码
response.encoding response.apparent_encoding
直接输出:
print(response.text)
或者有时会把求到的html存成文档,静态抓取:
#这样就好了
with open(example.html,w,encodingresponse.apparent_encoding) as f:f.write(response.text)
补充一点: 对于有些香港的网页,他们经常会使用gb2312作为编码,这时候,如果你跟他们一起使用这个编码在输出的时候就会出现问题,直接看到gb2312 ---改成 GBK 即可!!!
---------你不改的话,如果你使用xpath,就容易遇到乱码!!
总结: 他变由他变,把咱的encoding改成动态的,跟着他一起变!!!