( Python 3.2.3 を使用して) サーバーから XML ファイルを取得しようとしていますが、「そのようなファイルやディレクトリはありません」というエラーが表示され続けます。エラー メッセージに URL が出力されるので、URL は正しいと確信しています。URL をコピー アンド ペーストしてブラウザに読み込むことができます。ですから、どうしてこうなったのか、非常に困惑しています。これが私のコードです:
import xml.etree.ElementTree as etree
class Blah(object):
def getXML(self,xmlurl):
tree = etree.parse(xmlurl)
return tree.getroot()
def pregameData(self,url):
try:
x = self.getXML('{0}linescore.xml'.format(url))
except IOError as err:
x = "I/O error: {0}".format(err)
return x
if __name__ == '__main__':
x = Blah()
l = ['http://gd2.mlb.com/components/game/mlb/year_2013/month_04/day_15/gid_2013_04_15_anamlb_minmlb_1/',
'http://gd2.mlb.com/components/game/mlb/year_2013/month_04/day_15/gid_2013_04_15_phimlb_cinmlb_1/',
'http://gd2.mlb.com/components/game/mlb/year_2013/month_04/day_15/gid_2013_04_15_slnmlb_pitmlb_1/'
]
for url in l:
pre = x.pregameData(url)
print(pre)
そして、常にこのエラーを返します:
I/O error: [Errno 2] No such file or directory: 'http://gd2.mlb.com/components/game/mlb/year_2013/month_04/day_15/gid_2013_04_15_anamlb_minmlb_1/linescore.xml'
I/O error: [Errno 2] No such file or directory: 'http://gd2.mlb.com/components/game/mlb/year_2013/month_04/day_15/gid_2013_04_15_phimlb_cinmlb_1/linescore.xml'
I/O error: [Errno 2] No such file or directory: 'http://gd2.mlb.com/components/game/mlb/year_2013/month_04/day_15/gid_2013_04_15_slnmlb_pitmlb_1/linescore.xml'
これらの URL をコピー アンド ペーストして、ファイルがそれらの場所に存在することを確認できます。ファイルとディレクトリをローカルホストにコピーし、外部サーバーに何らかのブロックがある場合に備えて、これをローカルホストとして試しました。それは私に同じエラーを与えたので、それは問題ではありません。Etree の parse()は HTTP を扱えないのではないかと思ったのですが、ドキュメントにはそれについて何も書かれていないので、それも問題ではないと思います。
更新:コメントで示唆されているように、私は を使用しましopen()
たが、それでもエラーが返されました。インポートしてurllib.request.urlopen(url)を試すと、 AttributeError: 'module' object has no attribute 'request'というエラーが返されます。