朱雀桥边野草花,乌衣巷口夕阳斜。

大家好,我是Python进阶者。

一、前言

前几天在Python最强王者交流群【向阳】问了一个Python网络爬虫乱码的问题。问题如下:

各位王者网页源码,下面爬出来中文显示乱码,尝试过encoding-utf-8、gbk、gb2312都不行,请问是什么问题?

下面是具体的运行代码:

import requests
from bs4 import BeautifulSoup


def main():
 href_lists = []
 # 从首页获取所有章节的url
 head = {
  "User-Agent""Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0"
 }
 url = 'https://www.shicimingju.com/book/sanguoyanyi.html'
 # 获取响应
 page_text = requests.get(url, headers=head).text
 # 实例化bs
 bs = BeautifulSoup(page_text, 'lxml')   
 # 数据解析
 url_lists = bs.find_all('a', class_="tabli")
 for href in url_lists:
  href_lists.append(href['href'])
 # print(href_lists)
 for i in range(len(href_lists)):
  href = href_lists[i]
  detail_url = 'https://www.shicimingju.com' + href
王者网页源码,中文显示乱码,尝试多种 编码都不行,该怎么解决?
  # print(detail_url)
  response = requests.get(detail_url, headers=head).text
  bs2 = BeautifulSoup(response, 'lxml')
  print(bs2.h1)
  # title = bs2.find('h1').text
  # print(title)

  break


if __name__ == '__main__':
 main()

上面代码为什么爬出来中文显示乱码:

第一回·宴桃园豪杰三结义  æ–©é»„巾英雄首立功

二、实现过程

这里【吴超建】给了一个指导,如下所示:

response = requests.get('https://www.shicimingju.com/book/sanguoyanyi.html', cookies=cookies, headers=headers)
response.encoding = response.apparent_encoding
print(response.text)

顺利地解决了粉丝的问题。

后来【莫生气】也给了三种方法,其实历史文章中有写,这里继续放上来,给大家参考学习,屡试不爽。

如果你也有类似这种Python相关的小问题,欢迎随时来交流群学习交流哦,有问必答!

三、总结

大家好,我是Python进阶者。这篇文章主要盘点了一个Python网络爬虫中文乱码处理的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。

最后感谢粉丝【向阳】提出的问题,感谢【吴超建】给出的思路,感谢【莫生气】等人参与学习交流。

【提问补充】温馨提示,大家在群里提问的时候。可以注意下面几点:如果涉及到大文件数据,可以数据脱敏后,发点demo数据来(小文件的意思),然后贴点代码(可以复制的那种),记得发报错截图(截全)。代码不多的话,直接发代码文字即可,代码超过50行这样的话,发个.py文件就行。