set()
). Как минимум, у объекта должен быть реализован метод __hash__(self)
, а возможно и метод __eq__(self, other)
.message
и call
объявляются в бесконечном цикле внутри библиотеки telebot, а затем передаются как аргумент при вызове самописных функций, зарегистрированных в telebot посредством декораторов.request
в качестве аргумента. import requests
# URL адреса для запроса ссылок на загрузку и имена таблиц
param_list = [
('https://analytic.nalog.ru/portal/GetBLOB.htm', 'T_ANALYTICAL_INFORMATION'),
('https://analytic.nalog.ru/portal/GetLongRaw.htm', 'T_PASSPORTS'),
]
# Ниже можно указать через запятую ID файлов
id_list = [1268]
# Если не указано, то с 0 по 4999
if not id_list:
id_list = range(5000)
for i in id_list:
try:
for load_url, table_name in param_list:
data = {'ID': i, 'TABLE': table_name}
# Получение ссылки на загрузку файла
response = requests.post(load_url, data, timeout=3, verify=False)
file_name = response.text.replace('files/', '')
file_url = 'https://analytic.nalog.ru/portal/files/{}'.format(file_name)
print('ид: {}, имя: {}, ссылка: {}'.format(i, file_name, file_url))
if 'Истраченный набор результатов' not in file_name and 'Недопустимый тип столбца' not in file_name:
# Загрузка файла
response = requests.get(file_url, timeout=6, verify=False)
# Сохранение файла в текущую папку
with open(file_name, 'wb') as file:
file.write(response.content)
except Exception as error:
print(type(error), error)
при обращении по id например тому же самому "1268",мне не возвращается файл с данными, а возвращается "Истраченный набор результатов"
import requests
# Ниже можно указать через запятую ID файлов
id_list = []
# Если не указано, то с 0 по 249
if not id_list:
id_list = range(250)
for i in id_list:
try:
data = {'ID': i, 'TABLE': 'T_ANALYTICAL_INFORMATION'}
load_url = 'https://analytic.nalog.ru/portal/GetBLOB.htm'
# Получение ссылки на загрузку файла
response = requests.post(load_url, data, timeout=3, verify=False)
file_name = response.text.replace('files/', '')
file_url = 'https://analytic.nalog.ru/portal/files/{}'.format(file_name)
print('ид: {}, имя: {}, ссылка: {}'.format(i, file_name, file_url))
if file_name != 'Истраченный набор результатов':
# Загрузка файла
response = requests.get(file_url, timeout=6, verify=False)
# Сохранение файла в текущую папку
with open(file_name, 'wb') as file:
file.write(response.content)
except Exception as error:
print(type(error), error)
Я не понимаю, где найти эти id.
А если удастся найти id,то я так понимаю их нужно указать в data?
import requests
id_list = [123, 124, 125, 126] # В квадратных скобках укажите нужные ID через запятую
for i in id_list:
try:
data = {
'ID': i,
'TABLE': 'T_ANALYTICAL_INFORMATION',
}
load_url = 'https://analytic.nalog.ru/portal/GetBLOB.htm'
response = requests.post(load_url, data, verify=False)
file_name = response.text.replace('files/', '')
file_url = 'https://analytic.nalog.ru/portal/files/{}'.format(file_name)
response = requests.get(file_url, verify=False)
with open(file_name, 'wb') as file:
file.write(response.content)
except Exception as error:
print(type(error), error)
property
всё же не callable
, просто у меня print()
внутри property
вызывался.getattr(self, name)
, мы получаем значение атрибута (строку, число или что-то другое). Но, если мы сделали property
-- значение вычисляется динамически.self.methods
произойдёт getattr(self, 'methods')
, то наше property
начнёт динамически вычислять само себя до тех пор, пока интерпретатор не прибьёт программу.