2015-08-28 91 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

樂意幫忙。如果這解決了您的問題,請隨時接受答案。 –