decode:编码
encode:解码
如下图:
可以看出Unicode充当的一个翻译官的角色,(差不多所有的编码方式都可转化为Unicode)
import requests
url=’https://www.baidu.com/’
html=requests.get(url).text
print(html)
输出错误的结果如下图
很明显是编码的问题,让我们来看看百度用的什么编码。
再看看我们自己用的编码:
那么问题来了,同样都是utf-8为什么会出现GBK错误呢?
这个原因确实弄的我脑壳痛,怎么也找不到原因,各种编码都试过了结果还是不行。后来我想能不能直接输出它的编码方式。于是有了下面的结果。
好家伙!原来你他妈的不是utf-8编码。把我害的好苦啊!
至于为什么是‘ISO-8559-1’编码我个人猜的应该是下载网页的时候解压缩导致的。注意啊是我猜的,我没去看,有空去看看
这下好了,应该可以解决了!
着实有些尴尬,按道理说应该能够输出正确答案了呀!可现在却什么都没了。于是我又想起了有一个输出格式的,我猜应该是这个原因。
于是我添加了如下代码
import io
sys.stdout=io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8')
解决编码问题期间看到别人写的python代码,突然发现一个很好用的包,BeautifulSoup。于是我也装了个完了玩。
将下载下来的百度的源码生成了一个soup对象,于是有了后面的漂亮的格式。
添加代码如下:
from bs4 import BeautifulSoup
#使用ISO-8859-1解码之后的代码
soup = BeautifulSoup(html)
print(soup.prettify())
效果如下:
是不是漂亮多了!
其实BeautifulSoup的功能远不止次,之后的应用过一段时间补上。
到此这篇博客就结束了,这篇博客也是治好了我多年的心病,就以为这个梗弄的我好久没有用过python爬虫了,现在解决了,以后一定会勤加练习。
感谢以下资料给了我灵感
寒舟独饮的博客
脚本之家的文章
bw13的博客
火贪三刀的博客