Это потому, что ваш первый для l oop возвращает все элементы. Однако, когда вы ставите следующий для l oop вне внешнего, он всегда дает вам последний элемент. он должен быть внутри внешнего для l oop.
Теперь попробуйте.
webpage = requests.get('https://www.newegg.com/p/pl?Submit=StoreIM&Depa=1&Category=38')
content = webpage.content
soup = BeautifulSoup(content, 'lxml')
containers = soup.find_all("div", class_="item-container")
brand = []
for container in containers:
cont_brand = container.find_all("div",{"class":"item-info"})
for name_brand in cont_brand:
brand.append(name_brand.find("img").get("alt"))
print(brand)
Выход :
['EVGA', 'MSI', 'ASUS', 'MSI', 'Sapphire Tech', 'EVGA', 'GIGABYTE', 'XFX', 'ASUS', 'ASRock', 'EVGA', 'ASUS', 'EVGA', 'GIGABYTE', 'GIGABYTE', 'GIGABYTE', 'EVGA', 'EVGA', 'MSI', 'ASRock', 'EVGA', 'XFX', 'Sapphire Tech', 'ASRock', 'GIGABYTE', 'ASUS', 'MSI', 'MSI', 'MSI', 'MSI', 'MSI', 'EVGA', 'GIGABYTE', 'EVGA', 'ASUS', 'GIGABYTE']
Если у вас BS 4.7.1 или выше, вы можете использовать этот css селектор.
webpage = requests.get('https://www.newegg.com/p/pl?Submit=StoreIM&Depa=1&Category=38')
content = webpage.content
soup = BeautifulSoup(content, 'lxml')
brand = []
for name_brand in soup.select(".item-container .item-info"):
brand.append(name_brand.find_next('img').get("alt"))
print(brand)