IT-способ получения новостей из достоверного источника

Популярным способом взаимодействия между информационными системами через web является SOAP. SOAP – один из протоколов WEB API сервиса. Данный протокол подразумевает обмен структурированными XML сообщениями при помощи одного из протоколов передачи, например, SMTP, FTP, HTTP, HTTPS. Гарантией успешного обмена является осуществление корректного обмена (создания и передачи, а также получения и интерпретации ответа) XML запросами.

Для того чтобы создать оптимальный процесс обмена XML запросами предлагаю использовать Python библиотеку zeep.

# Импортируем необходимые библиотеки from zeep import Client from zeep import helpers

Рассмотрим получение новостей SOAP сервера ЦБ РФ с января по апрель 2021 года, будем использовать метод NewsInfo(FromDate, ToDate). В аргументах данного метода передадим даты и окончания периода за который мы хотим получить новости (тип аргументов — System.DateTime).

Вынесем параметры метода NewsInfo, а также ссылку на SOAP сервер ЦБ РФ в переменные для удобства.

# Параметры для применения метода NewsInfo FromDate=datetime(2021, 1, 1) ToDate=datetime(2021,4,1) # Ссылка с которой происходит выгрузка url = 'http://www.cbr.ru/dailyinfowebserv/dailyinfo.asmx?WSDL'

Выполним запрос SOAP серверу ЦБ РФ с применением метода получения новостей.

# Запрашиваем данные из SOAP сервиса client = Client(url) result = client.service.NewsInfo(FromDate, ToDate)

В результате выполнения запроса мы имеем XML файл в формате System.Data.Dataset. Данный документ содержит таблицу News, в которой находят столбцы:

  • Doc_id — ID документа
  • DocDate — Дата документа
  • Title — Заголовок
  • Url — URL документа

Используя одну из функций библиотеки zeep, преобразуем XML-документ в словарь.

# Преобразуем полученные данные в dict data = helpers.serialize_object(result, dict)
IT-способ получения новостей из достоверного источника

Просмотр результата запроса свидетельствует о том, что формат данных соответствует формату json. Для выполнения дальнейшего комфортного анализа преобразуем результирующую таблицу в pandas dataframe.

# Формируем DataFrame с данным import json import pandas as pd data = data.get('_value_1') df = pd.DataFrame.from_dict(data) # Преобразование DataFrame к DataFrame из столбца '_value_1', а в строках News df = pd.DataFrame(df['_value_1'] .apply(pd.Series)) # Преобразование DataFrame к необходимому виду df = pd.DataFrame(df['News'] .apply(pd.Series))

Мы получили желаемый результат.

IT-способ получения новостей из достоверного источника

Но при просмотре информации о DataFrame, мы можем заметить, что столбец DocDate имеет тип object. Дальнейшая работа с этими данными может требовать анализа дат, поэтому необходимо выполнить преобразование типа данных столбца.

IT-способ получения новостей из достоверного источника

Преобразуем данные столбца DocDate к дате формата “YYYY-mm-dd”:

# Создаем столбец Date, который является конвертацией столбца DocDate в тип datetime64 # Параметр utc=True указываем, чтобы избежать ошибок df['Date'] = pd.to_datetime(df['DocDate'], utc=True) # Приводим дату в необходимый формат df['Date'] = df['Date'].dt.strftime('%Y-%m-%d')
IT-способ получения новостей из достоверного источника

Таким образом, у нас есть датафрейм с точной информацией от первоисточника ЦБ РФ. Мы можем с уверенностью демонстрировать результаты анализа, не сомневаясь в достоверности данных.

Надеюсь, моя статья была для вас полезной. Буду рада вашим репостам и всегда готова ответить на ваши вопросы!

22
реклама
разместить
7 комментариев

Комментарий недоступен

5

Вы, конечно, меня простите, ещё от не уехавших. Но SOAP это г*вно мамонта.

4

в дополнение: у ЦБР есть телеграм канал

2

Теперь напишите как есть гречневую кашу ложкой, очень интересно

2

Комментарий недоступен

Кто-то курсач пишет на VC :)

1
Автор

Благодарим за проявленный интерес!
Данный материал был написан для IT новичков с целью рассказать о применении python библиотеки zeep.