@gndkg

Почему функция get_contact() неправильно парсит?

Здравствуйте. Есть код для парсинга данных с сайта .
scrapper:
main_data = {
    'organization_name': [],
    'organization_voen': [],
    'organization_address': [],
    'event_name': [],
    'event_number': [],
    'classification_code': [],
    'suggested_price': [],
    'event_start_date': [],
    'submission_deadline': [],
    'envelope_opening_date': [],

    'participation_fee': [],
    'participation_description': [],

    'usage_fee': [],
    'usage_description': [],

    'full_name': [],
    'contact': [],
    'position': [],
    'phone_number': []
}

nested_data = {
    'heading': [],
    'disclosure': [],
    'quantity': [],
    'measure_unit': [],
    'code': []
}

API_REQUEST_DELAY = 2


def get_total_items_from_link(api_link='https://etender.gov.az/api/events?EventType=2&PageSize=1&PageNumber=1&EventStatus=1&Keyword=&buyerOrganizationName=&PrivateRfxId=&publishDateFrom=&publishDateTo=&AwardedparticipantName=&AwardedparticipantVoen=&DocumentViewType='):
    try:
        response = requests.get(api_link, timeout=25)
        if response.status_code == 200:
            data = response.json()
            return data.get('totalItems', -1)
    except requests.Timeout:
        return -1
    return -1

def get_total_items_from_id(id):
    ...

def get_all_events_ids(page_size):
    template = f'https://etender.gov.az/api/events?EventType=2&PageSize={page_size}&PageNumber=1&EventStatus=1&Keyword=&buyerOrganizationName=&PrivateRfxId=&publishDateFrom=&publishDateTo=&AwardedparticipantName=&AwardedparticipantVoen=&DocumentViewType='
    try:
        response = requests.get(template, timeout=25)
        if response.status_code == 200:
            data = response.json()
            return sorted([item.get('eventId') for item in data.get('items', [])])
    except requests.Timeout:
        return []
    return []

def get_data_from_link_requests(ids):
    ...

def get_fees(ids):
    ...

def get_contact(ids):
    processed_ids = []
    for id in ids:
        processed_ids.append(id)
        template = f'https://etender.gov.az/api/events/{id}/contact-persons'
        try:
            response = requests.get(template, timeout=25)
            time.sleep(API_REQUEST_DELAY)
            if response.status_code == 200:
                data_list = response.json()
                if data_list:
                    for data in data_list:
                        main_data['full_name'].append(data.get('fullName', 'Yoxdur'))
                        main_data['contact'].append(data.get('contact', 'Yoxdur'))
                        main_data['position'].append(data.get('position', 'Yoxdur'))
                        main_data['phone_number'].append(data.get('phoneNumber', 'Yoxdur'))
                else:
                    main_data['full_name'].append('Yoxdur')
                    main_data['contact'].append('Yoxdur')
                    main_data['position'].append('Yoxdur')
                    main_data['phone_number'].append('Yoxdur')
            else:
                main_data['full_name'].append('Yoxdur')
                main_data['contact'].append('Yoxdur')
                main_data['position'].append('Yoxdur')
                main_data['phone_number'].append('Yoxdur')
        except requests.Timeout:
            main_data['full_name'].append('Yoxdur')
            main_data['contact'].append('Yoxdur')
            main_data['position'].append('Yoxdur')
            main_data['phone_number'].append('Yoxdur')
    
    print(len(processed_ids), '\n')
    print(main_data['position'], '\n')
    print(len(main_data['position']))

def get_fees_descriptions(ids):
    ...

def get_all_info_from_table(ids):
   ...

def fetch_data(ids):
    ...

get_contact(get_all_events_ids(200))


функция get_contact() парсит данные со страницы с помощью requests, и почему-то когда я вызвал эту функцию длина списков main_data['full_name'], main_data['contact'], main_data['position'], main_data['phone_number'] была 202 и при этом некоторые значения повторялись и были неверными. Вот дебаг main_data['full_name']:
['İlkiin Aslanov',       
 'Hüseynov Mayıl',       
 'Elbrus Tağıyev',       
 'Zulfiqar Quliyev',     
 'Rza Aslanov',
 'Pərvanə Sultanəliyeva',
 'Anar Rəhimov.',        
 'Ağasəlim İmranzadə',   
 'Tural Məmmədov',       
 'Nicat Muradlı',        
 'Eldar Bayramov',       
 'Orxan Nağıyev',        
 'İlkin Məmmədov',       
 'Nurlan Musayev',       
 'Əhməd Qarayev',        
 'Aynur Mehdiyeva',      
 'Nicat Muradlı',
 'Nail Muradov',
 'Zülfüqar Köçəriyev',
 'Rövşən Cəlilov',
 'Zülfüqar Köçəriyev ',
 'Cəfər Cəfərli',
 'Cəfər Cəfərli',
 'Akifə Bayramova',
 'Emil Səfərov',
 'Nərmin Rəcəbli',
 'Neman Əliyev ',
 'Toğrul Qarayev',
 'Tural Məmmədov',
 'Məmmədova Nəcibə',
 'Allahverdi Həmidov',
 'Orxan Əmirli',
 'Mehman Bayramov',
 'VAHİD ƏLİYEV',
 'Kənan Mustafayeva',
 'Tamerlan Bağırov',
 'Səlifli Əkrəm',
 'Rahim Həsənov',
 'Vasif',
 'Fair Fərhadov',
 'Nicat Mütəllimov',
 'Ziya Kərim-zadə',
 'Rüfət Sərdarlı',
 'Əhmədağa Salayev',
 'Elmin Dəmirçiyev',
 'Üzeyir Bağırov',
 'Üzeyir Bağırov',
 'Xəlilov Ramil ',
 'Elçin İbrahimov',
 'Fariz Abbasov',
 'Pərvanə Alcanlı',
 'Kərimova Elnarə',
 'Rəsul İbrahimxəlilov',
 'Zulayeva Rəna',
 'Eyvazov Həbib',
 'Dəyanət Fərəcov',
 'Elsevər Qoçiyev',
 'Elşən İsmayılzadə',
 'Vasif',
 'Fateh Əliyev',
 'Arzu Abbasov',
 'İlkin Niftullayev',
 'Məzahir Hüseynli',
 'Orxan Hüseynli',
 'Qabulov Mustafa Əli oğlu',
 'Təhminə Piriyeva',
 'Müşfiq Səttarzadə',
 'Orxan Nağıyev',
 'Şəhriyar İmanov',
 'Müşfiq Səttarzadə',
 'Azər Allahverdiyev',
 'Vüsalə Əliyeva',
 'Akif Əskərov',
 'Ağamirzəyev İlqar',
 'Orxan Hüseynli',
 'Vasif Aslanov',
 'Məhərrəmova Səbinə',
 'Rövşən Qasımov',
 'Aqil Əhmədov',
 'Asif Həmzətov',
 'Toğrul Qarayev',
 'Məhyəddinli Babək Cavanşir oğlu',
 'Ağamirzəyev İlqar  Mamed oğlu',
 'Əliyev Yusif',
 'Cəfər Əliyev',
 'Akif Əskərov',
 'Əlişir Mirzəyev',
 'Abdulla Böyükkişiyev',
 'Elvin.Bagirov',
 'Murad Hüseynli',
 'Seyid Həsənov ',
 'Şahin Hacıyev',
 'Rauf Süleymanov',
 'Rauf Süleymanov',
 'Emin Museyibov',
 'Məhyəddinli Babək Cavanşir oğlu',
 'Heydərov Məqsud',
 'Gülsüm İsmayılova',
 'Zulfiqar Quliyev',
 'Razim Məmmədov',
 'R. Əsgərli',
 'İbrahimov Zaur Ramiz oğlu',
 'Cavid Əliyev',
 'Şəms Məmmədli',
 'Orxan Hüseynli',
 'R. Əsgərli',
 'Zamiq Səmədov',
 'Elçin İbrahimov',
 'Orxan Əliyev',
 'Cəfər Əliyev',
 'Emil Quliyev',
 'Orxan İbadov',
 'Lalə Hacızadə',
 'Liana Şükürova',
 'Rəhimə Qurbanova ',
 'Asif Əliyev',
 'Elmir Murquzov ',
 'Seymur Qocayev',
 'Asəf Cəfərov ',
 'İlkin Aslanov',
 'Asif Əliyev',
 'Tamir Yusifov',
 'Fərid Alıyev',
 'Pərviz Abdullayev',
 'Abbasov Qalib',
 'Asəf Cəfərov ',
 'Cəfərov Nicat Şakir oğlu',
 'Murad Hüseynli',
 'Emil Səfərov',
 'Ramil İsmayılov',
 'Məzahir Hüseynli',
 'Məzahir Hüseynli',
 'Aslanov Sədrəddin',
 'Əkrəm Səlifli',
 'Elmir Murquzov',
 'Səxavət Süleymanzadə',
 'Kamil Əsgərov',
 'Kamil Əsgərov',
 'Anar Vəliyev',
 'Aqil Məhərrəmov',
 'Nicat Əskərov',
 'Turxan',
 'Turxan',
 'Anar Vəliyev',
 'Gülnar Süleymanova',
 'Şahmalı Ələkbərov',
 'Səlimxan Şükürlü',
 'Nuranə Eyubova',
 'Orxan Nağıyev',
 'Hüseynov Etibar ',
 'Emin Rüstəmov',
 'Tural Məmmədov',
 'Sunay Bağırov',
 'Anar Vəliyev',
 'Anar Vəliyev',
 'Məmmədov Əli',
 'Səadət Əbdüləzimova',
 'Zaur Məmmədov ',
 'Zaur Məmmədov ',
 'Seymur Qocayev',
 'Elvin Bagirov ',
 'Fəridə Cəfərova',
 'Hikmət Əliyev',
 'Bağırov Fərid',
 'Sunay Bağırov',
 'Elman Aslanov',
 'Əskərov Mirəli',
 'Elçin Xəlilli',
 'Sunay Bağırov',
 'Məmmədli Şəms ',
 'Rəhimdil Əhmədov',
 'Turxan',
 'Raamin Əbilov',
 'Emin Museyibov',
 'Eldəniz Qulamov',
 'Rzayev Ucal ',
 'Ramin İsgəndərov',
 'Bağırov Fərid',
 'Zəhra Nərimanova',
 'Sehranə Əliyeva',
 'R. Əsgərli',
 'Sunay Bağırov',
 'Həsən Əliyev',
 'Namiq Kərimov',
 'Ilqar Məmmədov',
 'Nərmin Vəliyeva',
 'Seyran Əliyev',
 'Quliyeva Leyla',
 'İlkin Məmmədli',
 'Elçin İbrahimov',
 'Kamal Piriyev',
 'Yusif Hüseynov',
 'Orxan Eyyubov',
 'Məhyəddinli Babək Cavanşir oğlu',
 'Nəzərov Ələkbər',
 'Mədinə Dadayeva',
 'Məmmədova Nəcibə',
 'Fariz Abbasov',
 'Mikayılov Zaur ',
 'Fatma Rahimli',
 'Toğrul Qarayev',
 'Məmmədyar Musayev']

И так случается только с этой функцией(и при перезапуске на тех же айдишниках выводит разные результаты). Почему так, и как это исправить?
  • Вопрос задан
  • 137 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы