gpt4 book ai didi

python - 保存一个 'lxml.etree._ElementTree' 对象

转载 作者:太空狗 更新时间:2023-10-29 17:37:06 27 4
gpt4 key购买 nike

在过去的几天里,我一直在学习 lxml 的基础知识;特别是使用 lxml.html 来解析网站并创建内容的 ElementTree。理想情况下,我想保存返回的 ElementTree,这样我就可以加载它并进行试验,而不必在每次修改脚本时都解析网站。我以为 pickle 是可行的方法,但是我现在开始怀疑了。虽然我能够在 pickle 后检索 ElementTree 对象......

type(myObject) 

返回

<class 'lxml.etree._ElementTree'>

对象本身似乎是“空的”,因为我对其进行的后续方法/属性调用都没有产生任何输出。

我的猜测是 pickle 在这里不合适,但有人可以提出替代方案吗?

(以防万一,以上内容发生在:python3.2、lxml 2.3.2、snow-leopard))

最佳答案

您已经在处理 XML,而 lxml 非常擅长解析 XML。所以我认为最简单的做法是序列化为 XML:

写入文件:

import lxml.etree as ET

filename = '/tmp/test.xml'
myobject.write(filename)

要调用write 方法,请注意myobject 必须是lxml.etree._ElementTree。如果它是一个lxml.etree._Element,那么你需要myobject.getroottree().write(filename).

从文件名/路径、文件对象或 URL 解析:

myobject = ET.parse(file_or_url)

从字符串中解析:

myobject = ET.fromstring(content)

关于python - 保存一个 'lxml.etree._ElementTree' 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8274438/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com