[Python] finding elements by attribute with lxml

Discussão em 'Python' iniciado por Stack, Julho 16, 2025.

  1. Stack

    Stack Membro Participativo

    I need to parse a xml file to extract some data. I only need some elements with certain attributes, here's an example of document:

    <root>
    <articles>
    <article type="news">
    <content>some text</content>
    </article>
    <article type="info">
    <content>some text</content>
    </article>
    <article type="news">
    <content>some text</content>
    </article>
    </articles>
    </root>


    Here I would like to get only the article with the type "news". What's the most efficient and elegant way to do it with lxml?

    I tried with the find method but it's not very nice:

    from lxml import etree
    f = etree.parse("myfile")
    root = f.getroot()
    articles = root.getchildren()[0]
    article_list = articles.findall('article')
    for article in article_list:
    if "type" in article.keys():
    if article.attrib['type'] == 'news':
    content = article.find('content')
    content = content.text

    Continue reading...

Compartilhe esta Página