удаление не нужного файла
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