Парсер для stat.gov.kz - реестр юридических лиц

Нужно было написать парсер для сбора информации об юридических лицах Республики Казахстан.

Парсер реализован на Python 3.6

 

Вкратце как работает программа:

1.Скачиваем с сайта stat.gov.kz 16 архивов по областям и городам республиканского значения

2.Распаковываем архивы, получаем 16 xls файлов

3.Открываем по очереди файлы и из каждого листа копируем данные в общий csv-файл

 

import requests

for i in 17, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34:

    link = 'http://stat.gov.kz/getImg?id=ESTAT0861'+ str(i)

    file = 'D:\\BIN\\' + str(i) + '.zip'

    f=open(file,'wb')

    ufr = requests.get(link, verify = False)

    f.write(ufr.content)

    f.close()

import zipfile

for i in 17, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34:

    zip_ref = zipfile.ZipFile('D:\\BIN\\' + str(i) + '.zip', 'r')

    zip_ref.extractall('D:\\BIN\\Excel')

    zip_ref.close()

import pandas as pd

import glob

import os

import xlrd

 

ROOTDIR = 'D:\\BIN\\Excel\\'

wb_pattern = os.path.join(ROOTDIR, '*.xls')

workbooks = glob.glob(wb_pattern)

 

all_data = pd.DataFrame()

for f in workbooks:

    #ef=pd.ExcelFile(f)

    #cnt_sh = len(ef.sheet_names)

    ef = xlrd.open_workbook(f)

    cnt_sh = len(ef.sheet_names())

    #print(cnt_sh)

    for cnt in list(range(0,(cnt_sh))):

        df = pd.read_excel(f, sheetname = cnt, index_col=None, skiprows=3, dtype=str)

        #print(df)

        all_data = all_data.append(df,ignore_index=True)

        #print(all_data)

        all_data.to_csv('D:\\BIN\\Excel\\BIN.csv', sep='|', quotechar='#', encoding = 'utf8')

Back to Top