用XML解析

问题描述:

我试图解析一个网络博客页面,并将某些数据拉出到列表中。这里是XML ..用XML解析

http://www-01.ibm.com/software/support/lifecycle/rss/PLCWeeklyXMLDownload.xml

有多个记录,但每次我需要拉出软件名称,版本号,版本号,ModLevelNumber和最终服务日期(如果有的话),并把它们到一个列表

我运行Python代码,但进出口新的XML,任何帮助表示赞赏

def myDownload(): 
    import xml.etree.ElementTree as et 
    import urllib.request 
    response = urllib.request.urlopen("http://www-01.ibm.com/software/support/lifecycle/rss/PLCWeeklyXMLDownload.xml") 
    tree = et.parse(response) 
    root = tree.getroot() 
    aList=[] 

    for child in root: 
     for node in child.findall("SWTitle"): 
     title = node.text 
     aList.append(title) 
     for nodes in child.findall("Versions"): 
     for version in nodes.findall("Version"): 
      for release in version.findall("Release_Mods"): 
      for mod in release.findall("Release_Mod"): 
       rNum = mod.find("releaseNumber") 
       rNumber = rNum.text 
       nNum = mod.find("modLevelNumber") 
       nNumber=nNum.text 
       aList.append(rNumber) 
       aList.append(nNumer) 

谁能帮助调整此代码,因为它似乎没有工作

+1

你有什么问题? – Blender

+1

寻找python的xml库。然后,如果你知道节点在xml树中的位置,那么你可以告诉它看起来那里。 – Patashu

+0

@Blender你可以检查我的代码 – BAI

可以使用lxml库这样的:

import requests 
from lxml import etree 

r = requests.get('http://www-01.ibm.com/software/support/lifecycle/rss/PLCWeeklyXMLDownload.xml') 
xml = r.content 
xml_dom = etree.fromstring(xml) 

# Iterate over <SWTitleRecord> 
for record_node in xml_dom: 
    data = {} 
    for attr_node in record_node: 
     if attr_node.tag == 'SWTitle' 
      data['title'] = attr_node.text 
     elif attr_node.tag == 'Versions': 
      # parse versions 
    ...  
+0

你能检查我的代码吗 – BAI

使用lxml的库来解析XML。 ElementTree不适用于更多嵌套标签。