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
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
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
for planet in root.findall('.//planet'):
print(planet.attrib)
for moon in planet.findall('moon'):
print("\t"+ str(moon.attrib))
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'?