Как использовать продолжение последовательности enumerate?
for j in url_pages_2:
buf = url.replace("?page=1", j)
response1 = requests.get(buf)
soup1 = BeautifulSoup(response1.text, "lxml")
items1 = soup1.find_all('div', class_='col-lg-4 col-md-6 mb-4')
for n, item in enumerate(items1, start=1):
name1 = item.find("h4", class_="card-title").text.strip()
price = item.find("h5").text
print(f'{n} {name1}: {price}')
Как продолжить счет нумерации? На странице ?page=1 извлекаемых данных находиться всего 9 позиций порядок мой нумеруются каждый раз по-новому с 1 до 9 после прохода 1 страницы ?page=1, как выполнить продолжение последовательности следующего запроса с условной страницы ?page=2, чтобы счет продолжился с 9 и до 18
Ответы (2 шт):
Можно так:
n = 1 # <---
for j in url_pages_2:
buf = url.replace("?page=1", j)
response1 = requests.get(buf)
soup1 = BeautifulSoup(response1.text, "lxml")
items1 = soup1.find_all('div', class_='col-lg-4 col-md-6 mb-4')
for n, item in enumerate(items1, start=n): # <---
name1 = item.find("h4", class_="card-title").text.strip()
price = item.find("h5").text
print(f'{n} {name1}: {price}')
Можно использовать функцию itertools.count, чтобы создать объект-счетчик, потом использовать его во внутреннем цикле через zip
from itertools import count
cnt = count(start=1)
for j in url_pages_2:
...
for item, n in zip(items1, cnt):
...
print(f'{n} {name1}: {price}')
Демонстрация работы:
import random
from itertools import count
url_pages_2 = ["page1", "page2", "page3"]
cnt = count(start=1)
for j in url_pages_2:
items1 = ["item1", "item2", "item3"]
for item, n in zip(items1, cnt):
name1 = f"{j}_{item}"
price = random.randint(100, 1000)
print(f'{n} {name1}: {price}')
Вывод:
1 page1_item1: 626
2 page1_item2: 380
3 page1_item3: 472
4 page2_item1: 140
5 page2_item2: 480
6 page2_item3: 805
7 page3_item1: 407
8 page3_item2: 655
9 page3_item3: 712
items1 внутри zip должно идти первым, потому что если первым будет cnt, то в конце итерации по items1 сначала будет запрошен очередной элемент из cnt, потом только zip определит, что элементы в items1 закончились. Получится, что некоторые номера в cnt будут пропущены.