使用しているサイトには複数の問題があります。
あなたが使用しているサイトは、GET引数として送信していることを尊重しませんtype=xml
。代わりに、受け入れヘッダーを送信して、XMLを受け入れることをサイトに伝える必要があります。それ以外の場合はJSONデータを返します
サイトが content-type を受け入れていないtext/xml
ため、送信する必要がありますapplication/xml
あなたのparse
呼び出しは正しいです。他の回答では、データを取得する必要があると誤って言及されており、代わりparse
にファイル名またはファイルタイプオブジェクトを取得します
だからここに作業コードがあります
import urllib2
from xml.etree import ElementTree
url = 'http://api.ean.com/ean-services/rs/hotel/v3/list?type=xml&apiKey=czztdaxrhfbusyp685ut6g6v&cid=8123&locale=en_US&city=Dallas%20&stateProvinceCode=TX&countryCode=US&minorRev=12'
request = urllib2.Request(url, headers={"Accept" : "application/xml"})
u = urllib2.urlopen(request)
tree = ElementTree.parse(u)
rootElem = tree.getroot()
hotel_list = rootElem.findall("HotelList")
print hotel_list
出力:
[<Element 'HotelList' at 0x248cd90>]
オブジェクトを作成してヘッダーRequest
を渡していることに注意してくださいAccept
ところで、サイトが JSON を返す場合、XML を解析する必要があるのはなぜですか。JSON の解析はより簡単で、既製の Python オブジェクトを取得できます。