Вам нужно использовать find_all
(возвращает список) вместо find
(возвращает один элемент):
for i, j in zip(item_details.find_all('div', class_='item-details'), item_details.find_all('ul', class_='item-type')):
print(i.h3.a.text, " - ", j.span.text)
Вывод:
Veil of Steel - Magic Helm
Leoric's Crown - Legendary Helm
Harlequin Crest - Magic Helm
The Undead Crown - Magic Helm
...
или в более читаемом формате:
names = item_details.find_all('div', class_='item-details')
types = item_details.find_all('ul', class_='item-type')
for name, type in zip(names, types):
print(name.h3.a.text, " - ", type.span.text)