@Cipo

Как парсить всю страницу через API?

Как мне правильно сделать цикл который будет парсить все записи, а не часть?
Мне нужно запарсить 20к записей, но на одной странице лимит карточек с данными 20 штук
Вообщем не знаю как настроить сдвиги на странице (offset) и лимит (limit) и перебирать их

limit = 1
offset = 1
while limit < 20000:
    for limit in range(limit, limit+100):
        for offset in range(offset, offset+200):
            pars_inst_2 = fetch(f'https://rest.epicstars.com/api/v1/users/platform/?limit={limit}&offset={offset}&orderby=-order_subscribers&type=INSTAGRAM', {
  "headers": {
    "accept": "application/json, text/plain, */*",
    "accept-language": "ru",
    "cache-control": "no-cache",
    "pragma": "no-cache",
    "sec-ch-ua": "\"Chromium\";v=\"104\", \" Not A;Brand\";v=\"99\", \"Yandex\";v=\"22\"",
    "sec-ch-ua-mobile": "?0",
    "sec-ch-ua-platform": "\"Windows\"",
    "sec-fetch-dest": "empty",
    "sec-fetch-mode": "cors",
    "sec-fetch-site": "same-site",
    "Referer": "https://apps.epicstars.com/",
    "Referrer-Policy": "strict-origin-when-cross-origin"
  },
  "body": None,
  "method": "GET"
})
print(pars_inst_2.status_code)
print(pars_inst_2.json().keys())


peoples_Inst_2 = pars_inst_2.json()['results']
name_DataInstagram1 = [people['platform']['username'] for people in peoples_Inst_2]
subscriber_count_DataInstagram1 = [people['platform']['subscriber_count'] for people in peoples_Inst_2]
type_DataInstagram1 = [people['type'] for people in peoples_Inst_2]
  • Вопрос задан
  • 86 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Novenkij
Обычно логика такая.
limit - количество записей на странице.
offset - на сколько сдвинуто начало, относительно первой записи.

Цикл по лимитам тут лишний, значения лимитов перебирать не нужно.
Допустим, мы будем перебирать по 100 записей на каждой странице, для этого задаем limit = 100. Теперь, каждую новую страницу нам нужно увеличивать offset (сдвиг) на 100. Шаг задается третьим значением в range (начало, конец, шаг)
Т.е. на первой странице мы получаем записи от 1 до 101, на второй от 102 до 202 и т.д.

limit = 100
for offset in range(offset, offset+20000, 100):
    pars_inst_2 = fetch(f'https://rest.epicstars.com/api/v1/users/platform/?limit={limit}&offset={offset}&orderby=-order_subscribers&type=INSTAGRAM', {


P.S. Два цикла про одно и тоже запускать тоже нет смысла. Либо цикл while, а внутри цикла изменяешь значение переменной, либо цикл for и он закончится сам, когда достигнет последнего значения в последовательности.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы