对 UTF-8 进行编码,检索 Xpath 文本时不起作用



>我正在通过lxml xpath从网站上检索一些日期:

page = requests.get(url)
tree = html.fromstring(page.content)
titles_arr = tree.xpath("//span[@class='lister-item-header']/span/a/text()")

有些标题有德语变音符号(例如üöä(,所以我想对返回的文本进行编码,如下所示:

for title in titles_arr:
title = title.encode('utf-8')

但它仍然由类似的Der Herr der Ringe - Die Ru00fcckkehr des Ku00f6nigs组成,而不是它们各自的 Unicode 字符。我做错了什么?

谢谢

您似乎正在处理使用转义的 unicode 字符编码的字节串。

你可以像这样解码:

>>> bs = b'Die Ru00fcckkehr des Ku00f6nigs'
>>> bs.decode('raw-unicode-escape')
'Die Rückkehr des Königs'

如果您正在处理文本而不是字节,则需要编码然后解码:

>>> s = 'Die Ru00fcckkehr des Ku00f6nigs'                                                                                                                                                                                               
>>> 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属性。

最新更新