не могу полностью спарсить сайт

хотел создать программу, что бы та проходилась по станицам hh ссылка на сайт с запросом и вытаскивала требования с каждой вакансии, после чего отсортировать и вывести в порядке убывания. от части мне удалось, но вот проблема. загружает он со страницы только 20 вакансий, хотя с браузера грузит 50. а страниц проходит 12, хотя в браузере 22. мои познания в разработке не велики, по этому не знаю на сколько глубоко может лежать проблема. заранее спасибо

import requests as req
from bs4 import BeautifulSoup as BS


 
# онализ страницы с вакансиями и получение ссылок ... 
def get_links():     #soup (на лист вакансий) -> list links
    element = soup.find_all(attrs={"class":"magritte-link___b4rEM_5-0-7 magritte-link_mode_primary___l6una_5-0-7 magritte-link_style_neutral___iqoW0_5-0-7 magritte-link_enable-visited___Biyib_5-0-7"})
    
    links = []
    
    for el in element:
        link = el.get("href")
        if link:
            links.append(link)
    return links


# хватаем требования с вакансий FULL
def questy_blank(url_ln):   # url (на вакансию) -> main_list.append    
    response    = req.get(url_ln, headers=headers)
    soup        = BS(response.text, "html.parser")
    global main_list
    
    
    if check_code(response.status_code):
        elements = soup.find_all('li', attrs={'data-qa': 'skills-element'})
        
        for el in elements:
            main_list.append(el.text)
        main_list.append("-:-") # для отладки
   
    
# проверем ответ от сервера FULL
def check_code(res):
    if res == 200:
        return 1
    else:
        print (f"err code: {response.status_code}")
        return 0


# результат FULL
def result(): # готовый список (.lower) list -> sort -> output obj : n \n obj2 : n-1
    detect_cope = []
    unsorted_dict = {}
    for skill in main_list:
        if skill in detect_cope:
            continue
        
        detect_cope.append(skill)
        unsorted_dict[skill] = main_list.count(skill)
        
    sorted_dict = dict(sorted(unsorted_dict.items(), key=lambda item: item[1], reverse=True))

    for index, (skill, cnt) in enumerate(sorted_dict.items(), start=1):
        print(f"    {index}: {skill} | {cnt}")


url = "https://hh.ru/search/vacancy?text=Backend+python&salary=&ored_clusters=true&page=0&searchSessionId=b26f36ca-8ed4-4d23-b671-20745be2c63a"
headers = { "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:136.0) Gecko/20100101 Firefox/136.0" }

main_list = []
main_page = 0

while check_code((response:=req.get(url, headers=headers)).status_code):
    soup = BS(response.text, "html.parser")
    print("main_page:", main_page)
    links = get_links() 
    
    for ln in links:    # перебор вакансий на странице
        questy_blank(ln)   

    main_page += 1
    index_page = url.index("&searchSessionId")
    url = url[:index_page-1] + str(main_page) + url[index_page:] # next page

result()

Ответы (1 шт):

Автор решения: DEN

Рекомендую делать сбор требований через их API: https://api.hh.ru/openapi/redoc.

→ Ссылка