Задать вопрос
@MasterCopipaster

Почему iter из пакета ElementTree не находит тэги?

Доброе время суток, подскажите пожалуйста, согласно официальной документации iter должен рекурсивно вернуть все тэги указанные в переданных параметрах. однако в моем случае он вообще не чего не находит. при этом само дерево строится корректно.
import requests
from xml.etree import ElementTree

response = requests.get(
    'https://s3-ap-northeast-1.amazonaws.com/data.binance.vision?delimiter=/&prefix=data/spot/monthly/klines/BTCUSDT/1h/')
print(response)
archive_tree = ElementTree.fromstring(response.content)
for files in archive_tree.iter('Key'):
    print(files)


Там приходит примерно такой xml
<?xml version="1.0" encoding="UTF-8"?>
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
   <Name>data.binance.vision</Name>
   <Prefix>data/spot/monthly/klines/BTCUSDT/1h/</Prefix>
   <Marker />
   <MaxKeys>1000</MaxKeys>
   <Delimiter>/</Delimiter>
   <IsTruncated>false</IsTruncated>
   <Contents>
      <Key>data/spot/monthly/klines/BTCUSDT/1h/BTCUSDT-1h-2017-08.zip</Key>
      <LastModified>2021-06-22T11:33:55.000Z</LastModified>
      <ETag>"5b52442785bb8a40d4bb63850188647b"</ETag>
      <Size>21363</Size>
      <StorageClass>STANDARD</StorageClass>
   </Contents>
</ListBucketResult>


Я хочу просто выцепить все ссылки на архивы которые лежат в теге Key - однако он не может найти данный тег - почему?
  • Вопрос задан
  • 76 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
hottabxp
@hottabxp Куратор тега Python
Сначала мы жили бедно, а потом нас обокрали..
При поиске тегов вам нужно указывать пространство имен:
import requests
from xml.etree import ElementTree

response = requests.get(
    'https://s3-ap-northeast-1.amazonaws.com/data.binance.vision?delimiter=/&prefix=data/spot/monthly/klines/BTCUSDT/1h/')
print(response)
archive_tree = ElementTree.fromstring(response.content)
namespace = archive_tree.tag.split('}')[0].strip('{')
for files in archive_tree.iter(f'{{{namespace}}}Key'):
    print(files.text)

Output:
<Response [200]>
data/spot/monthly/klines/BTCUSDT/1h/BTCUSDT-1h-2017-08.zip
data/spot/monthly/klines/BTCUSDT/1h/BTCUSDT-1h-2017-08.zip.CHECKSUM
data/spot/monthly/klines/BTCUSDT/1h/BTCUSDT-1h-2017-09.zip
data/spot/monthly/klines/BTCUSDT/1h/BTCUSDT-1h-2017-09.zip.CHECKSUM
data/spot/monthly/klines/BTCUSDT/1h/BTCUSDT-1h-2017-10.zip
data/spot/monthly/klines/BTCUSDT/1h/BTCUSDT-1h-2017-10.zip.CHECKSUM
...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы