>我正在通过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
属性。