大家好,我是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文件就行。
––