Simple answer:
root.findall('banner') != root.findall('Banner')
The XML tags are case sensitive.
I think you can also compress your code somewhat, by putting everything in a single loop:
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
if not types:
break
elif type_ in types:
urls.append(url)
types.remove(type_)
return urls
The types.remove(type_)
statement should ensure that you only return the first match to each of your three types.