Парсинг на python в excel

друзья, получил задание сделать парсер сайта https://www.list-org.com, на моменте, где нужно, чтобы данные парсились в excel застопорился. Есть желающие помочь?

import requests
from bs4 import BeautifulSoup
from tabulate import tabulate
import pandas as pd

def load_page(url =  'http://www.list-org.com/company/5553931'):
    headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) \
        AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36'}

    if not url.startswith('http'):
        return None

    response = requests.get(url, headers=headers)

    print(response)
    if not response.ok:
        return None

    return response.text


def get_company_data(text):
    soup = BeautifulSoup(text, 'html.parser')
    company_data = soup.find_all('div', {'class': 'c2m'})

    return company_data

def parse_data(text):
    company_info_dict = dict.fromkeys(['company_name',
                                       'chief_name',
                                       'registration_date',
                                       'status',
                                       'inn',
                                       'kpp',
                                       'ogrn'])

    general_text = text[0]
    additional_text = text[2]

    company_name = general_text.find('a', {'class': 'upper'}).text
    company_info_dict['company_name'] = company_name

    general_items = general_text.find_all('tr')
    additional_items = additional_text.find_all('p')

    for item in general_items:
        splited_item = item.text.split(':', 1)

        key = splited_item[0]
        value = splited_item[1]

        if key == 'Полное юридическое наименование':
            company_info_dict['company_name'] = value

        elif key == 'Руководитель':
            company_info_dict['chief_name'] = value
           
        elif key == 'Дата регистрации':
            company_info_dict['registration_date'] = value

        elif key == 'Статус':
            company_info_dict['status'] = value

    for item in additional_items:
        splited_item = item.text.split(':', 1)

        key = splited_item[0]
        value = splited_item[1]

        if key == 'ИНН':
            company_info_dict['inn'] = value.strip()

        elif key == 'КПП':
            company_info_dict['kpp'] = value.strip()
           
        elif key == 'ОГРН':
            company_info_dict['ogrn'] = value.strip()

    return company_info_dict

#######################################################

def getOrgData(url):
    text = load_page(url)
    # !! get_company_data и parse_data нужно изменить так, чтобы они возвращали 
    # лишь нужные данные (см.ниже)
    company_data = get_company_data(text)
    company_info_dict = parse_data(company_data)
    # Здесь возвращаются нужные для экселя данные(Статус, Численность, Основной и Доходы соответственно)
    return {'State': company_info_dict['State'], 'People_amount' : company_info_dict['People_amount'], 'Core' : company_info_dict['Core'], 'Income' : company_info_dict['Income']}




MAIN_URL = 'http://www.list-org.com/company/'

def main():
    # Получаете экселевский файл
    data = pd.read_excel('./parsng.xlsx')
    # Вытягиваете из него все ИНН
    INNarr = data['ИНН / ЕДРПОУ(Укр) пользователя'].to_list()

    # Начинайте идти по всем ИНН
    for i in range (len(INNarr)):
        
        url = MAIN_URL + str(INNarr[i])
       
        text = getOrgData(url)
        
        if (text) is None:
            print('Не удалось загрузить страницу {}'.format(url))
            #Цикл продолжается
            continue


        data.loc[i]['Статус'] = text['State']
        data.loc[i]['Численность персонала'] = text['People_amount']
        data.loc[i]['Core'] = text['Core']
        data.loc[i]['Income'] = text['Income']
    
    data.to_excel('./gotovo.xlsx')
        


if __name__ == '__main__':
    main()```

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