이 코드는 세 개의 문자열 중 하나를 포함하는 하위 요소가있는 목록의 첫 번째 요소를 찾습니다. ' 팬트 ','그래픽 '또는'포스터 '. 이 문자열 중 하나를 찾으면 URL의 텍스트가 들어있는 elements 태그를 목록에 추가하고 movie는 다음 문자열로 추가합니다. 최종 결과는 3 개의 URL을 포함하는 3 개의 문자열을 3 개의 이미지로 가져 와서 다운로드합니다. 그러나이 함수는 3이 아닌 1 항목으로 목록을 반환하며 이유는 알 수 없습니다. 누군가 제가 잘못하고있는 것을 지적 할 수 있습니까? 명확히하기 위해 XML 파일 구조도 포함했습니다.ElementTree, Python - 특정 텍스트를 포함하는 하위 요소가있는 요소를 찾고 목록에 다른 하위 요소 추가
def get_banner(target):
#Finds urls of show images
urls = []
types = ['fanart', 'graphical', 'poster']
tree = et.parse(target)
root = tree.getroot()
for banner in root.findall('Banner'):
url = 'http://thetvdb.com/banners/' + banner.find('BannerPath').text
type_ = banner.find('BannerType').text
print url
if type_ == types[0]:
urls.append(url)
break
for banner in root.findall('banner'):
url = 'http://thetvdb.com/banners/' + banner.find('BannerPath').text
type_ = banner.find('BannerType').text
print url
if type_ == types[1]:
urls.append(url)
break
for banner in root.findall('banner'):
url = 'http://thetvdb.com/banners/' + banner.find('BannerPath').text
type_ = banner.find('BannerType').text
if type_ == types[2]:
urls.append(url)
break
return urls
.
<Banners>
<Banner>
<id>406321</id>
<BannerPath>fanart/original/81189-21.jpg</BannerPath>
<BannerType>fanart</BannerType>
<BannerType2>1920x1080</BannerType2>
<Colors>|234,222,110|0,0,0|103,103,103|</Colors>
<Language>en</Language>
<Rating>7.0930</Rating>
<RatingCount>43</RatingCount>
<SeriesName>false</SeriesName>
<ThumbnailPath>_cache/fanart/original/81189-21.jpg</ThumbnailPath>
<VignettePath>fanart/vignette/81189-21.jpg</VignettePath>
</Banner>
</Banners>
여기서 'urls.extend'를 사용 하시겠습니까? 순진하게 말하자면 '추가'가되어야합니다. 또한, 변수 이름에'type'과 같은 파이썬 키워드를 사용하지 말아야합니다. – ebarr
@ebarr 좋은 점이 다른 varibale 이름으로 변경되었습니다. 고마워, 그래, 그것은 덧붙여 야했다 : –