2013-04-16 9 views
0

Je tente d'analyser une page de blog Web et d'extraire certaines données dans une liste. Voici le xml ..Analyse syntaxique avec XML

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

Il y a plusieurs enregistrements mais de chaque i doivent retirer le titre du logiciel, numéro de version, numéro de presse, ModLevelNumber et la fin de la date de service (le cas échéant) et de mettre les dans une liste

Je suis en cours d'exécution du code python mais im nouveau xml, toute aide est appréciée

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) 

quelqu'un peut-il aider à régler ce code, car il ne semble pas travailler

+1

Qu'est-ce qui vous pose problème? – Blender

+1

Rechercher une bibliothèque xml pour python. Ensuite, si vous savez où le nœud sera dans l'arbre xml, alors vous pouvez lui dire d'y regarder. – Patashu

+0

@Blender pouvez-vous vérifier mon code – BAI

Répondre

0

Vous pouvez utiliser la bibliothèque lxml pour cela:

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

pouvez-vous vérifier mon code – BAI

1

Utiliser la bibliothèque lxml pour analyser le xml. ElementTree ne fonctionne pas avec plus de balises imbriquées.