Python爬虫过程中出现中文解码出现乱码的现象

诸如类似的代码:

……

texts = bs.find_all('div',class='content_element').p.text.strip()

     print(texts)

……

搜索的内容中有中文的情况下,python包BeautifulSoup解码网页的时候默认应该是使用了gbk进行编码

通过此代码可以看出

……

r=requests.get(link,headers=headers)

Print(r.encoding)

……

可以显示编码格式为iso-8859-1

因此我在代码中定义的headers中没有说明网页头文件中的编码格式,以下图片为非标准格式浏览器头部文件


Python爬虫过程中出现中文解码出现乱码的现象_第1张图片

一般标准的头部文件格式:

   

Python爬虫过程中出现中文解码出现乱码的现象_第2张图片

《HTTP权威指南》里第16章国际化里提到,如果HTTP响应中Content-Type字段没有指定charset,则默认页面是'ISO-8859-1'编码。这处理英文页面当然没有问题,但是中文页面,就会有乱码了!


前面已经说明如何查看当前编码格式的方法,下面就说一下遇见此类问题该如何进行解决和纠正


首先因为使用的查看IDE中使用的解码格式是utf-8的,之前网页中默认使用的编码格式也是utf-8的,所以我们必须将其解码成utf-8格式的字符才能正常显示中文

使用之前的代码进行此操作:

texts = bs.find_all('div',class='content_element').p.text.strip().encode(‘iso-8859-1’).decode(‘utf-8’)

     print(texts)


或者在之前进行encoding=‘utf-8’解码修正

……

r=requests.get(link,headers=headers)

r=encoding=’utf-8’

print(r.encoding)

……

参考网站:

   https://www.cnblogs.com/ccsx/p/8572735.html

   https://www.cnblogs.com/surecheun/p/9694052.html

   https://www.cnblogs.com/bw13/p/6549248.html

你可能感兴趣的:(Python爬虫过程中出现中文解码出现乱码的现象)