Парсинг сайта с непонятной пагинацией

нужно получить всю информацию о всех торгах с сайта https://torgi.gov.ru/lotSearch1.html, но возникают проблемы с его пагинацией

я собирал ссылки с цифр внизу, проходил по ссылке "вперед", но в цикле всё время парсится только 1-я страница

import requests
from urllib3 import disable_warnings, exceptions
from bs4 import BeautifulSoup
from time import sleep, time
from fake_useragent import UserAgent
from random import randint
#import pandas as pd

disable_warnings(exceptions.InsecureRequestWarning)


def get_content(url, attr=None, retryings=0):

    retr = retryings

    try:
        response = requests.get(url, params=attr, verify=False, headers={'Authorization': 'Token 6ee9c7755faba9a18ac4add5b93d37a7'})
    except requests.exceptions.ConnectionError:
        print(f'------------------------------------------------------------------------------------------------------------------------\nrequests.exceptions.ConnectionError, get_content({url})\n\nне удалось получить информацию о странице\n\n------------------------------------------------------------------------------------------------------------------------')
        quit()
    else:
        if response.status_code != requests.codes.ok:
            if retryings <= 1:
                print(f"\nчто-то пошло не по плану...(код состояния HTTP {response.status_code}, страница {url})\nпробуем ещё раз через 0.5с\n")
                retr += 1
                sleep(0.5)
                get_content(url, attr, retr)
            else:
                print(f"\nничего не изменилось...(код состояния HTTP {response.status_code})\nидем дальше\n")

            try:
                content = BeautifulSoup(response.text, "html.parser")
            except requests.exceptions.ConnectionError as e:
                print('------------------------------------------------------------------------------------------------------------------------\nне удалось получить информацию о странице\n------------------------------------------------------------------------------------------------------------------------')
                quit()
            else:
                print(f'------------------------------------------------------------------------------------------------------------------------\nинформация о странице {url} успешно получена\n------------------------------------------------------------------------------------------------------------------------')
                return content
        else:
            content = BeautifulSoup(response.text, "html.parser")
            print(f'------------------------------------------------------------------------------------------------------------------------\nинформация о странице {url} успешно получена\n------------------------------------------------------------------------------------------------------------------------')
            return content


def parse():
    url = "https://torgi.gov.ru/index.html"
    content = get_content(url)
    hrefs = content.find_all('a', {'class': 'long_working'})

    data = {'Организатор торгов': [], 'Номер извещения Тип имущества Площадь': [], 'Описание и тех. хар-ки': [], 'Местоположение': [], 'Начальная цена срок действия и вид договора': [], 'Ежемес. плата за объект': []}

    last_data = data

    for h in hrefs[1:]:
        url = "https://torgi.gov.ru/" + h['href']
        page_cont = get_content(url)
        if page_cont.find('a', {'title': "Перейти на одну страницу вперед"}):
            for page in range(int(page_cont.find('a', {"title": "Перейти на последнюю страницу"}).text))[1:]:
                print(f"page - {page}")

                spans_left = page_cont.find_all('td', {'class': 'datacell left'})

                for sp in spans_left:
                    for s in sp:
                        span_text = str(s)[len("<span>") : len(s)-len("</span>")-1].split(" ")
                        temp = ""
                        for e in range(len(span_text)):
                            if not e == len(span_text)-1:
                                temp += span_text[e] + " "
                            else:
                                temp += span_text[e]
                        data['Организатор торгов'].append(temp)

                data['Организатор торгов'] = list(filter(None, data['Организатор торгов']))
                print(data['Организатор торгов'][0])
                print(data['Организатор торгов'][len(data['Организатор торгов'])-1])
                next_page_url = f"https://torgi.gov.ru/lotSearch1.html?wicket:interface=::search_panel:resultTable:list:bottomToolbars:2:toolbar:span:navigator:navigation:{page}:pageLink::IBehaviorListener:0:-1&random=0.{randint(10 ** 17, 99 ** 17)}"


                page_cont = get_content(next_page_url)
    return data

d = parse()



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