以XML格式从etree的单个元素获取文本

2024-10-01 13:37:18 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的代码可以正常工作,但是没有任何python方法来获得相同的功能吗? 我只想解析XML并从多个元素(name、name\u status、url)中获取文本。在

from lxml import etree
from urllib2 import urlopen

def ask_CoL(url):
    tree = etree.parse(urlopen(url))
    tn=[ el.get('total_number_of_results') for el in tree.iter('results') ]
    try:
        nr = int(tn[0])
    except ValueError:
        nr = 0
    if nr == 1:
        newstr = str([ el.text for el in tree.getiterator(tag='name')])\
                                             .strip("[]'")+','\
                +str([ el.text for el in tree.getiterator(tag='name_status')])\
                                             .strip("[]'")+','\
                +str([ el.text for el in tree.getiterator(tag='url')])\
                                             .strip("[]'")+'\n'
    else:
        newstr = 'NA\n'
    return newstr

XML示例:

^{pr2}$

Tags: textnameintreeurlfortagstatus
1条回答
网友
1楼 · 发布于 2024-10-01 13:37:18

您可以简化接口和实现:

import urllib2
from xml.etree import cElementTree as etree

def f(url):
    tree = etree.parse(urllib2.urlopen(url))         
    el = tree.find('results')
    if el is not None:
       lst = [el.findtext(tag) or '' for tag in "name name_status url".split()]
       return ','.join(lst) 

相关问题 更多 >