2015-08-28 90 views
0

我是python中ElementTree概念的初学者。我创建了一个简单的程序,从保存在本地计算机上的xml文件中提取一些信息。在Python中使用ElementTree解析特定网址的xml文件

import xml.etree.cElementTree as ET 
tree = ET.ElementTree(file='cricket.xml') 
root = tree.getroot() 
for child in root: 
    print("%s - %s"%(child.get('srs'),child.get('mchDesc'))) 

现在,我想从一个特定的网址使用一个XML文件,并提取该文件的信息。我怎样才能做到这一点,而不必在本地计算机上保存该文件?

Link of xml file

+0

只需指向Web地址:'树= ET.parse(的 'http://www.URLtoXML.xml')'。然后'tree.iter()'或'tree.get()'离开任何节点。 – Parfait

回答

2

可以使用的ElementTree的fromstring()相结合的方法和requests模块的requests.get()做到这一点。

https://docs.python.org/2/library/xml.etree.elementtree.html#parsing-xml

fromstring()分析从字符串XML直接插入元件,其 是解析树的根元素。

安装请求模块:

pip install requests 

使用requests.get()从URL作为字符串得到您的XML文件。将其传入fromstring()函数。

import xml.etree.cElementTree as ET 
import requests 
tree = ET.fromstring(requests.get('http://synd.cricbuzz.com/j2me/1.0/livematches.xml').text) 
for child in tree: 
    print("%s - %s"%(child.get('srs'),child.get('mchDesc'))) 

结果:

None - None 
India tour of Sri Lanka, 2015 - Cricbuzz Cup - SL vs IND 
Australia tour of Ireland, 2015 - IRE vs AUS 
New Zealand tour of South Africa, 2015 - RSA vs NZ 
Royal London One-Day Cup, 2015 - SUR vs KENT 
Royal London One-Day Cup, 2015 - ESS vs YORKS 
+0

谢谢。这真的很有帮助。 –

+0

乐意帮忙。如果这解决了您的问题,请随时接受答案。 –