我正在通过lxml xpath从某个网站检索某个日期:
page = requests.get(url)
tree = html.fromstring(page.content)
titles_arr = tree.xpath("//span[@class='lister-item-header']/span/a/text()")
有些标题带有德国Umlaute(例如üöä
),因此我想到了对返回的文本进行编码,如下所示:
for title in titles_arr:
title = title.encode('utf-8')
,但它仍由Der Herr der Ringe - Die R\u00fcckkehr des K\u00f6nigs
组成,而不是它们各自的unicode字符。我在做什么错了?
谢谢
答案 0 :(得分:0)
您似乎正在处理用转义的Unicode字符编码的字节串。
您可以这样解码:
>>> bs = b'Die R\u00fcckkehr des K\u00f6nigs'
>>> bs.decode('raw-unicode-escape')
'Die Rückkehr des Königs'
如果要处理文本而不是字节,则需要先编码然后解码:
>>> s = 'Die R\u00fcckkehr des K\u00f6nigs'
>>> s.encode('latin-1').decode('raw-unicode-escape')
'Die Rückkehr des Königs'
这种编码用于转义json中的unicode字符,以将json限制为ascii值:
>>> json.dumps('Die Rückkehr des Königs')
'"Die R\\u00fcckkehr des K\\u00f6nigs"'
因此,无论您要获取的URL是带有嵌入式json的html还是带有嵌入式html的json-都值得检查响应的json
属性。