(前言:我知道,这个问题已经谈过一百次了,但我还是不明白)
我试图加载html页面并输出文本,尽管我得到了正确的网页,但BeautifulSoup以某种方式破坏了重音字符的编码,这些字符不是前127个ASCII字符的一部分:
# -*- coding: utf-8 -*-
import sys
from urllib import urlencode
from urlparse import parse_qsl
import re
import urlparse
import json
import urllib
from bs4 import BeautifulSoup
url = "http://www.rtve.es/alacarta/interno/contenttable.shtml?ctx=29010&locale=es&module=&orderCriteria=DESC&pageSize=15&mode=TEXT&seasonFilter=40015"
html=urllib2.urlopen(url).read()
soup = BeautifulSoup(html)
div = soup.find_all("span", class_="detalle")
capitulo_detalle = div[0].text (doesn't work, capitulo_detalle is type str with utf-8, div[0].tex is type unicode)div[0].text的输出应该类似于:
Sátur se dirige al sur en busca de Estuarda y Gabi,pero un compaero de viaje inesperado hará que cambie de rumbo。胡安·西根预告片。厄尔尼诺症是一种现实的射血药。guila Roja tiene.
但我得到的结果是:
U‘xe1tur se dirige al sur en busca de Estuarda y Gabi,pero un compa\xf1ero de viaje inesperado har\xe1 que cambie de rumbo。胡安·西根预告片。厄尔尼诺症是一种现实的射血药。\xc1guila Roja tiene.
->我需要更改什么才能得到正确的字符?
我知道这一定是这些问题的重复,但答案在这里似乎行不通:Python and BeautifulSoup encoding issues How to correctly parse UTF-8 encoded HTML to Unicode strings with BeautifulSoup?
我还读过关于unicode,utf-8,ascii的典型文档,例如https://docs.python.org/3/howto/unicode.html,显然没有成功.
发布于 2017-02-02 22:51:43
我相信我终于得到它了..。
>>> div = soup.find("span", class_="detalle")
>>> div.text
u'S\xe1tur se dirige al sur en busca de Estuarda y Gabi, pero-这是unicode,\xe1是'á‘的’代码‘(http://www.utf8-chartable.de/unicode-utf8-table.pl?start=4096&number=128&names=-&utf8=string-literal)
>>> print(div.text)
Sátur se dirige al sur en busca de Estuarda y Gabi, pero>>> div.text.encode('utf-8')
'S\xc3\xa1tur se dirige al sur en busca de Estuarda y Gabi, pero我不明白为什么输出显示为\xc3\xa1而不是'á‘。
>>> print div.text.encode('utf-8')
Sátur se dirige al sur en busca de Estuarda y Gabi, pero>>> blurr = div.text.encode('cp850')
>>> blurr
'S\xa0tur se dirige al sur en busca de Estuarda y Gabi, pero
>>> type(blurr)
<type 'str'>-->编码为代码页850的Unicode,在Windows下python-shell中使用
>>> print(blurr)
Sátur se dirige al sur en busca de Estuarda y Gabi, pero-这是对的!
在Kodi中,我可以使用utf-8表示,例如,字符'á‘保存在变量\xc3\xa1中,但是当变量的内容显示为"xbmcgui.Dialog().ok(addonname,blurr)“时,就会在屏幕上显示正确的’á‘.
我也是.
发布于 2017-02-02 07:29:41
import requests
from bs4 import BeautifulSoup
url = "http://www.rtve.es/alacarta/interno/contenttable.shtml?ctx=29010&locale=es&module=&orderCriteria=DESC&pageSize=15&mode=TEXT&seasonFilter=40015"
html=requests.get(url)
soup = BeautifulSoup(html.text, 'lxml')
div = soup.find("span", class_="detalle")
capitulo_detalle = div.text 退出:
'Sátur se dirige al sur en busca de Estuarda y Gabi, pero un compañero de viaje inesperado hará que cambie de rumbo. Los hombres de Juan siguen presos. El enemigo comienza a realizar ejecuciones. Águila Roja tiene...'使用requests和python3,问题就永远不会出现
https://stackoverflow.com/questions/41991943
复制相似问题