удаление не нужного файла
parent
f07dbc9d3b
commit
4f8bf95efa
104
cor_ func.py
104
cor_ func.py
|
|
@ -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)
|
||||
Loading…
Reference in New Issue