0

( 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'というエラーが返されます。

4

1 に答える 1