Поэтому я сыграл abit с deq и почти подошел к финишу, но был обеспокоен тем, что он печатает 8 раз из-за длины deq, пока я просто хочу, чтобы он распечатывался один раз.
То, что я сделал, это:
old_list = []
deq = deque(old_list, maxlen=8)
url = 'https://www.supremecommunity.com/restocks/eu/'
while True:
try:
new_list = []
bs4 = soup(requests.get(url).text, "html.parser")
for item in bs4.findAll('div', {'class': '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
new_list.append(name + color)
for newitem in new_list:
if newitem not in deq:
print(name)
print(color)
deq.append(newitem)
else:
print('Sleeping 5 sec')
time.sleep(5)
except:
continue
В основном он проверяет веб-сайт и печатает имя и цвет, а затем добавляет его в список deq. Однако мой вывод выводит 8 раз с тем же именем и цветом из-за maxlen = 8, и мой вопрос:
Как я могу сделать это, чтобы он печатался только один раз?
Вы всегда выдавались те же переменные, name
и color
, как они, где, наконец, определяется в for
-loop выше.
name = item.find('h5', {'class': 'handle restock-name'}).string
color = item.find('h6', {'class': 'restock-colorway'}).string
Когда вы print(name)
и print(color)
в секунду for
-loop, это всегда относится к последним значениям, которые имеют name
и color
.
Чтобы решить эту проблему, вы должны обратиться к переменной newitem
в своих заявлениях на печать.
РЕДАКТИРОВАТЬ:
Здесь вы просто конкатенируете две строки.
new_list.append(name + color)
Я предлагаю вам составить список списков.
new_list.append([name,color])
Затем вы можете использовать print(newitem[0])
и print(newitem[1])
для печати разных имен и цветов.
name and color
отдельности?