以下Python代码使用BeautifulStoneSoup为Tolkien的“Húrin的孩子们”获取LibraryThing API信息。
import urllib2
from BeautifulSoup import BeautifulStoneSoup
URL = ("http://www.librarything.com/services/rest/1.0/"
"?method=librarything.ck.getwork&id=1907912"
"&apikey=2a2e596b887f554db2bbbf3b07ff812a")
soup = BeautifulStoneSoup(urllib2.urlopen(URL),
convertEntities=BeautifulStoneSoup.ALL_ENTITIES)
title_field = soup.find('field', attrs={'name': 'canonicaltitle'})
print title_field.find('fact').string
不幸的是,它不是'Húrin',而是打印出'Húrin'。这显然是一个编码问题,但我无法弄清楚我需要做什么来获得预期的输出。非常感谢帮助。
答案 0 :(得分:4)
在网页的来源中,它看起来像这样:The Children of Húrin
。所以编码在它甚至被转换为XML之前就已经被打破了......
如果这是所有书籍的一般问题,你需要解决它,这似乎有效:
unicode(title_field.find('fact').string).encode("latin1").decode("utf-8")
答案 1 :(得分:1)
网页可能在谈论其编码。输出看起来像UTF-8。如果你最后有一个str,那么你需要将其解码为UTF-8。如果你有一个unicode,那么你需要首先编码为Latin-1。