diff --git a/cor_ func.py b/cor_ func.py deleted file mode 100644 index cbebfc4..0000000 --- a/cor_ func.py +++ /dev/null @@ -1,104 +0,0 @@ -import requests -from bs4 import BeautifulSoup -from pprint import pprint -import os -import re - -# Зашлушка, тут должен быть другой utl или список url -URL_TITLE = "https://formats.saby.ru/report/fns" -# Перенапраляет на https://formats.saby.ru/respons -URL_FORMATS = 'https://formats.saby.ru' -# Имя сохраняемого файла -filename_report = 'report fns.txt' - -def parse_html(url=str): - """ - Фунция принимает строку URL, - Делает запрос, создает объект HTML - вовращаем обьект - """ - response = requests.get(url) - if not(200 <= response.status_code <= 299): - print("Ошибка при запросе:", response.status_code) - return response.status_code - # Создание обьекта HTML - soup = BeautifulSoup(response.text, 'html.parser') - return soup - -def parse_date_title(url=str): - """ - Функия ожидает list из URL ввида: - url = https://formats.saby.ru/report/fns/128513 - Заходит на каждый URL, запоминает дату. - Возвращает словарь две строки: - date = 01.07.22 - id_date = 5.01data_title - """ - # Запрос страницы: - response = requests.get(url) - # Проверка статуса запроса - if not(200 <= response.status_code <= 299): - print('parse_date_title: ', response.status_code) - return response.status_code - # Парсинг в HTML - soup_fns = BeautifulSoup(response.text, 'html.parser') - # Поиск в HTML строки ввида: Действующий формат (с 10.01.23) 5.01 - div_element = soup_fns.find('div', class_='controls-Dropdown__text') - # Извлекаем текст из элемента - text = div_element.get_text() - regex = r'.+\D+(\d+\D+\d+\D+\d+).+(\d+\D+\d+)' - date, id_date = re.search(regex, text).groups() - return date, id_date - - -def parse_reports(soup=BeautifulSoup, url=str): - """ - Ожидается url ввида: - https://formats.saby.ru/reports/{title}/{id} - Достаются все необходимые данные, возвращаются в ввиде словаря: - {106538: ('fns', 'НД по косвенным налогам', '01.08.23', '5.04')} - """ - # Содрежит url всех записей - list_report_url = [] - dict_data = {} - # Ищет последний значение в url(пока заглушка) - title = URL_TITLE.rstrip('/').split('/')[-1] - # Цикл в котором добавляем в лист url ввида: - # https://formats.saby.ru/report/fns/116682 - for link in soup.find_all('a'): - # Ищет по тегу: href - href = link.get('href') - if f'/report/{title}/' in href: - # id записи - id = href.rstrip('/').split('/')[-1] - #URL всех записей - url_title = f'{url}{href}' - list_report_url.append(url_title) - link = soup.find('a', href=href) - # Имя записи - span = link.find('span', class_="ProxySbisRu__registry-BrowserItem_typeName") - # Передаем текущию запись цикла - date, id_date = parse_date_title(url_title) - # Добавление всех данных в итоговый словарь - dict_data.update({id: (title, span.text, date, id_date)}) - - return dict_data - -def write_report_data(filename, dict_name = dict): - """ - Сохраняем запись: - https://formats.saby.ru/report/fns/106013 Действующий формат (с 26.02.24) 5.04 - """ - with open(filename, 'w', encoding='utf-8') as f: - for key, value in dict_name.items(): - str_k_v = f'{key}: {value}\n' - f.write(str_k_v) - -# Объект HTML -html = parse_html(URL_FORMATS) - -# Словарь с нужными данными -dict_result = parse_reports(html, URL_FORMATS) - -# Запись данных в текстовый файл -write_report_data(filename_report, dict_result)