Когда вы работаете с flickrapi
в Python, часто полезно напечатать XML, который возвращается вызовами API, чтобы увидеть, что происходит.В вашем примере, если вы добавите:
from xml.etree import ElementTree
... вверху, а затем добавите:
print ElementTree.tostring(favs)
... вы увидите, что возвращенная структура:
<rsp stat="ok">
<photosets page="1" pages="1" perpage="80" total="80">
<photoset .../>
<photoset .../>
<photoset .../>
<photoset ...>
</photosets>
</rsp>
В реальном приложении вы хотите проверить статус возврата и проверить атрибуты page
, но чтобы быстро получить то, что вам нужно, давайте просто посмотрим на элементы <photoset>
.Чтобы перебрать их, вы можете изменить свой цикл на:
for elm in favs.getchildren()[0]:
print ElementTree.tostring(elm)
Затем вы увидите структуру каждого элемента photoset
, по которому вам придется перемещаться.Например, можно указать:
<photoset can_comment="1"
count_comments="0"
count_views="34"
date_create="1156703089"
date_update="1297462539"
farm="1"
id="72157594253605858"
needs_interstitial="0"
photos="73" primary="226222345"
secret="63fde66413"
server="62"
videos="0"
visibility_can_see_set="1">
<title>Birds</title>
<description />
</photoset>
... поэтому заголовок фактически хранится в подэлементе title
.Из этого вы можете видеть, что для получения необходимой информации вы можете сделать:
for elm in favs.getchildren()[0]:
title = elm.getchildren()[0].text
print ("id: %s secret: %s setname: %s") %(elm.get('id'), elm.get('secret'), title)
... который производит вывод:
id: 72157600139832705 secret: 4e884f3523 setname: French Creek State Park
id: 72157600047937451 secret: d3c84ed8df setname: Las Vegas
id: 72157594253605858 secret: 63fde66413 setname: Birds
и т. Д.