Cela est dû à différentes méthodes d'encodage. L'encodage de la plate-forme Windows est généralement gbk ou isoxxx. Vérifiez la méthode d'encodage du Web (vous pouvez la vérifier dans Chrome), puis convertissez l'encodage en celui du système. et tout ira bien
En fait, vous pouvez afficher le chinois en affichant h2 seul. Si vous devez afficher des tuples comme vous le faites, reportez-vous au code suivant
.
from __future__ import unicode_literals
#-*-coding:utf-8-*-
import requests
from bs4 import BeautifulSoup
res = requests.get('http://news.sina.com.cn/china/')
res.encoding='utf-8'
soup=BeautifulSoup(res.text,'html.parser')
for news in soup.select('.news-item'):
if len(news.select('h2'))>0:
h2=news.select('h2')[0].text
a=news.select('a')[0]['href']
test = str((h2, a))
print(test.decode("unicode-escape"))
Lorsque vous rencontrez des problèmes de codage, et que vous avez également besoin de comprendre les origines historiques du codage, vous pouvez lire cet article, http://foofish.net/python-cha... Vous saurez comment analyser le problème lorsque vous rencontrez du codage dans le futur.
Le début de u'' indique qu'il est déjà unicode. Il n'y a pas de problème avec l'encodage, mais il y a un problème avec la façon dont vous imprimez. Si vous le modifiez en 2.7, ça devrait aller
Essayez sans tuples
Cela devrait toujours être un problème d'encodage résiduel
Lors de l'impression, le __str__() du tuple est en fait appelé
Cela est dû à différentes méthodes d'encodage. L'encodage de la plate-forme Windows est généralement gbk ou isoxxx. Vérifiez la méthode d'encodage du Web (vous pouvez la vérifier dans Chrome), puis convertissez l'encodage en celui du système. et tout ira bien
En fait, vous pouvez afficher le chinois en affichant h2 seul. Si vous devez afficher des tuples comme vous le faites, reportez-vous au code suivant
.Lorsque vous rencontrez des problèmes de codage, et que vous avez également besoin de comprendre les origines historiques du codage, vous pouvez lire cet article, http://foofish.net/python-cha... Vous saurez comment analyser le problème lorsque vous rencontrez du codage dans le futur.
python3
Le début de u'' indique qu'il est déjà unicode. Il n'y a pas de problème avec l'encodage, mais il y a un problème avec la façon dont vous imprimez. Si vous le modifiez en 2.7, ça devrait aller
Après l'avoir lu, convertissez-le simplement directement en chaîne
imprimer(h2 + a)