Python lxml返回十进制Unicode数字,如ක න&引用;
我正在尝试从HTML文件中提取数据。(两个标记之间的所有内容) 这是我的python代码Python lxml返回十进制Unicode数字,如ක න&引用;,python,unicode,lxml,Python,Unicode,Lxml,我正在尝试从HTML文件中提取数据。(两个标记之间的所有内容) 这是我的python代码 page = requests.get(url) source = html.fromstring(page.content) body = "" for atag in source.xpath('//div[@class="lts-txt2"]'): body = body + tostring(atag) print body 但是它返回这个
page = requests.get(url)
source = html.fromstring(page.content)
body = ""
for atag in source.xpath('//div[@class="lts-txt2"]'):
body = body + tostring(atag)
print body
但是它返回这个රුසියාවේ代码>
我发现这些代码是僧伽罗语(Unicode十进制代码)——
我需要将它们转换为Unicode字符如果希望这些值作为Unicode文本返回,那么应该将encoding='utf-8'
传递给tostring()
调用
这将覆盖其转义所有非ASCII字符的默认行为。我建议将python3用于此类程序。然后用-*-编码:utf-8-*-
tostring()
启动python脚本?为什么您要使用它,而不是直接引用文本节点?那么我需要更改什么呢?atag.text
is将以文本形式显示文本,而不是编码为(X)HTML本身。另一方面,如果您尝试生成HTML,lxml正在创建的编码是正确的——任何正确实现的浏览器都将解码这些序列,没有理由对其进行更改。更改atag->atag.text后,它会在get_data body=body+tostring中的第58行给我这个错误文件“\get_data.py”(atag.text)lxml.etree.tostring(src\lxml\lxml.etree.c:69414)类型错误:无法序列化类型“unicode”。