Как очистить четыре разных класса в один список

83
7

Так что в основном я стараюсь сделать монитор через веб-сайт [Supreme restock] [1]

Итак, теперь проблема в том, что я могу полностью исчезнуть, но единственным решением, которое я выяснил, было создание чего-то вроде:

while True:
try:
list = []
list2 = []
list3 = []
list4 = []

url = 'https://www.supremecommunity.com/restocks/eu/'
bs4 = soup(requests.get(url).text, "html.parser")

for tag in bs4.findAll('h5', {'class': 'handle restock-name'}):
list.append(tag.string)

for tag2 in bs4.findAll('h6', {'class': 'restock-colorway'}):
list2.append(tag2.string)

for tag2 in bs4.findAll('h6', {'class': 'restock-colorway'}):
list2.append(tag2.string)

for tag3 in bs4.findAll('img', {'class': 'l2d-image size-thumbnail'}):
list3.append(tag3['data-src'])

for tag4 in bs4.findAll('div', {'class': 'message-item restock-item'}):
itemid = tag4['data-itemid']
list4.append('http://www.supremenewyork.com/shop/' + itemid)

y = 0
for x in list[:]:
print(x + list2[y] + ' - ' + list3[y] + ' - ' + list4[y])
y += 1

sys.exit()

и он распечатывает то, что я хочу:

Cutouts Tee( Terra Cotta - XLarge ) - http://assets.supremenewyork.com/156668/sm/laJkUkh_sRA.jpg - http://www.supremenewyork.com/shop/303505
Nylon Plaid Pullover( Green - XLarge ) - http://assets.supremenewyork.com/156221/sm/Gcd63F5PQKk.jpg - http://www.supremenewyork.com/shop/303455
Classic Script Hooded Sweatshirt( Yellow - Medium ) - http://assets.supremenewyork.com/156738/sm/sDr4Bi5w3bU.jpg - http://www.supremenewyork.com/shop/303512
Cordura® S Logo 6-Panel( Black - N/A ) - http://assets.supremenewyork.com/156721/sm/OsCNYeO_y4U.jpg - http://www.supremenewyork.com/shop/303511
Vertical Logo Baseball Jersey( Black - Medium ) - http://assets.supremenewyork.com/156286/sm/PIyVb6Gwgrk.jpg - http://www.supremenewyork.com/shop/303463
Perforated Leather Hooded Sweatshirt( Black - Medium ) - http://assets.supremenewyork.com/156740/sm/GnenfJ06zQg.jpg - http://www.supremenewyork.com/shop/303513
Bedroom Tee( Bright Blue - Large ) - http://assets.supremenewyork.com/156682/sm/ZHITQZ65f1I.jpg - http://www.supremenewyork.com/shop/303507
Fuck You Tee( Black - Large ) - http://assets.supremenewyork.com/156653/sm/Hbytan_5dmM.jpg - http://www.supremenewyork.com/shop/303504

но я чувствую, что это будет слишком много, и может быть сложнее создать монитор, если это произойдет. Поэтому мне интересно, как я могу сделать все это в одном списке, что означает, что

 Cutouts Tee( Terra Cotta - XLarge ) - http://assets.supremenewyork.com/156668/sm/laJkUkh_sRA.jpg - http://www.supremenewyork.com/shop/303505

все это будет в одном списке и т.д. Это может быть не лучшее решение, поэтому, если у вас есть другие! не стесняйтесь!

спросил(а) 2018-08-22T16:46:00+03:00 1 год, 9 месяцев назад
1
Решение
64

Попробуйте найти элемент контейнера, который содержит имя, цвет и т.д. Для данного элемента, а затем найдите нужные свойства, выполнив поиск среди его дочерних элементов.

Например, для страницы, которую вы пытаетесь очистить, это может быть div.restock-item:

for item in bs4.findAll('div', {class: 'restock-item'}):
# Filter away advertisements, which are also wrapped in 'restock-item':
if item.find('div', {class: 'user-detail'}):
name = item.find('h5', {'class': 'handle restock-name'}).string
color = item.find('h6', {'class': 'restock-colorway'}).string
# fetch thumbnails, etc. in the same fashion
print(name + color + ...)

ответил(а) 2018-08-22T17:00:00+03:00 1 год, 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема