2013-04-16 4 views
0

나는 웹 블로그 페이지를 구문 분석하고 특정 데이터를 목록으로 추출하려고합니다. 다음은 XML입니다 ..XML을 사용하여 구문 분석

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

가 여러 레코드가 있지만 각에서 내가 서비스 날짜의 소프트웨어 타이틀, 버전 번호, 릴리즈 번호, ModLevelNumber 및 종료 (있는 경우)를 빼고 넣어 필요 목록에

내가 파이썬 코드를 실행하고 있지만, 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

파이썬 용 xml 라이브러리를 찾으십시오. 그런 다음, xml 트리에서 노드가 어디에 있는지 알면 거기에 표시되도록 말할 수 있습니다. – Patashu

+0

@Blender는 내 코드를 확인할 수 있습니까 – BAI

답변

0

당신은이에 대한 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

1

사용 lxml이 라이브러리를 XML을 구문 분석 할 수 있습니다. ElementTree는 더 많은 중첩 태그와 작동하지 않습니다.

관련 문제