Wpis z mikrobloga

Chciałbym podejrzeć za pomocą #python w #xml wszystkie tagi planet i ich atrybuty coords.

https://s174-pl.ogame.gameforge.com/api/playerData.xml?id=100788

W pierwszym zapytaniu sklejkami z stackOverflow udało mi się zrobić to co chciałem ale w drugiej części nie potrafię poruszać się po xmlu.

import requests
from lxml import etree

###Tu szukam koordynatów konkretengo gracza
#url = '[https://s174-pl.ogame.gameforge.com/api/universe.xml'](https://s174-pl.ogame.gameforge.com/api/universe.xml')
#response = requests.get(URL)
#root = etree.fromstring(response.content)
#xml_for_human = etree.tostring(root, pretty_print=True).decode()
#
#player = 0
#for node in root:
# if node.attrib['coords'] == "1:36:8":
# player = node.attrib['player']
##Tu już znalazłem i teraz robie zapytanie do drugiej strony z konkretnym id playera

URL = '[https://s174-pl.ogame.gameforge.com/api/playerData.xml?id='+player](https://s174-pl.ogame.gameforge.com/api/playerData.xml?id='+player)
response = requests.get(URL)
root = etree.fromstring(response.content)
XML_for_human = etree.tostring(root, pretty_print=True).decode()

#print(XML_for_human)
print('-----------------')
planets = root.findall('planet')

print(root.iter('planet'))

print('-----------------')

#programowanie #programista15k
  • 6
@Saly: dzięki o takie coś mi chodziło.

for planet in root.findall('.//planet'):
print(planet.attrib['name'], planet.attrib['coords'])

A powiedz mi jeszcze dlaczego są dwie kreski w findall? to konkretne poziomy niżej schodzimy w xmlu?
Tzn z 'playerData' do 'planets' i szukamy dopiero 'planet'?
@Sudo_exit: warto wrzucać takie przykłady na jakąś stronkę np. repl.it, dzięki czemu można szybko odpalić skrypt i szybko zdiagnozować co jest nie tak. Tak czy owak jesteś lepszy niż 90% wykopków, u których trzeba się dopytywać o kod