首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在lxml的iterparse中有多个标记名?

在lxml的iterparse中有多个标记名?
EN

Stack Overflow用户
提问于 2010-08-20 01:25:44
回答 2查看 2.9K关注 0票数 2

有没有办法从lxml的lxml.etree.iterparse中获取多个标记名?我有一个类似文件的对象,它有一个昂贵的读取操作和许多标记,所以获取所有标记或执行两次遍历并不是最优的。

编辑:它类似于Beautiful Soup的find(['tag-1', 'tag-2]),除了作为iterparse的一个参数。想象一下同时为<td><div>标记解析HTML页面的情形。

EN

回答 2

Stack Overflow用户

发布于 2013-09-26 19:16:47

我知道我来晚了,但也许其他人在同样的问题上需要帮助。此代码将为Tag1Tag2标记生成事件:

代码语言:javascript
复制
etree.iterparse(io.BytesIO(xml), events=('end',), tag=('Tag1', 'Tag2'))
票数 8
EN

Stack Overflow用户

发布于 2011-01-15 12:20:28

我不是百分之百确定你这里所说的“获取所有标签”是什么意思,但也许这就是你正在寻找的:

代码语言:javascript
复制
for event, elem in iterparse(file_like_object):
    if elem.tag == 'td' or elem.tag == 'div':
        # reached the end of an interesting tag
        print 'found:', elem.tag
        # possibly quit early to prevent further parsing
        if exit_condition: break

iterparse在解析过程中动态生成事件,因此您只能读取所需的数据。但是,您无法在解析过程中跳过读取元素,因为您不知道跳过多远。在上面的例子中,我们忽略了我们不感兴趣的标签。

您可能已经知道:不要对html使用xml解析器。lxml编辑-事实证明,lxml支持解析,但您应该查看文档以了解到何种程度。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3524444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档