2016-10-11 59 views
0

解析和XML這是導致錯誤消息的代碼是什麼錯誤味精「線1182解析」是指:誰能告訴我,當我試圖在python

import urllib 
import xml.etree.ElementTree as ET 

url = raw_input('Enter URL:') 

urlhandle = urllib.urlopen(url) 

data = urlhandle.read() 

tree = ET.parse(data) 

錯誤:

error msg screenshot

我是新來的蟒蛇。我確實閱讀過文檔和一些教程,但顯然我仍然犯了一些錯誤。我不相信這是xml文件本身,因爲它會將其用於兩個不同的xml文件。

+0

這就是所謂的回溯。有關它的含義的解釋,請參閱https://docs.python.org/3/tutorial/errors.html。 – zvone

+2

請發佈該錯誤的實際文本,而不是圖像。這樣其他人可以在搜索時找到它。 – usr2564301

+0

傳遞響應不是內容'tree = ET.parse(urllib.urlopen(url))' –

回答

1

考慮使用ElementTree的的fromstring()

import urllib 
import xml.etree.ElementTree as ET 

url = raw_input('Enter URL:') 
# http://feeds.bbci.co.uk/news/rss.xml?edition=int 

urlhandle = urllib.urlopen(url)  
data = urlhandle.read() 

tree = ET.fromstring(data) 

print ET.tostring(tree, encoding='utf8', method='xml') 
+0

謝謝。這也適用於我。 :-) – LeanneBD

+0

太棒了!請接受最有幫助的答案以確認解決方案。 – Parfait

0

錯誤消息指示您的代碼正在嘗試打開文件,其名稱存儲在變量源中。

它無法打開該文件(IOError),因爲變量源包含一堆XML,而不是文件名。

+0

謝謝Danielle。我認爲我處理URL的方式,打開它然後解析它看起來很笨拙,但我找不到正確的方法來做到這一點。是否有單行語法可以接受輸入,然後將其解析爲xml? – LeanneBD

+0

您使用源兩次,一次作爲文件名,然後用新的文件句柄翻開它。嘗試像inFile = open(source,「rb」) –

+1

不,這是誤導。 'source'來自ElementTree庫的源代碼,而不是來自OP的代碼。 – mzjn

1

data是將XML內容作爲字符串的引用,但parse()函數需要文件名或file object作爲參數。這就是爲什麼有一個錯誤。

urlhandle是一個文件對象,所以tree = ET.parse(urlhandle)應該爲你工作。

+0

只要注意任何人搜索這個和mzjn,這與其他選項同樣適用,但我只能'檢查'一個響應(作爲一個完整的newb,我覺得這很奇怪,因爲即使有最少的經驗,我發現通常多種方式來創建功能性代碼)。無論如何,這工作:-) – LeanneBD

相關問題