40x
005597
2024-08-22

Веб-запросы (API) инструмента Geo-Zone: Автоматизация с помощью Python

Как можно с помощью Python автоматизировать веб-запросы (API) к инструменту геолокации?


Ответ:

Да, вы можете сделать это очень легко. Это показано на следующем примере.

Подготовка

Чтобы отправлять веб-запросы к инструменту геолокации с помощью Python, вам необходимо:

  1. Редактор или IDE (интегрированная среда разработки) для написания скрипта
  2. Python - python.org
  3. Запросы на библиотеку Python
  4. Библиотека Python Pandas (необязательно)

Для выполнения веб-запроса инструмента геолокации требуется информация для инструмента геолокации. Это будет объяснено на примере структуры URL-адреса запроса в следующей статье:
Веб-сервис Contolling (API)

В нашем примере используется следующая информация, которую необходимо заменить в скрипте на вашу:

  1. Язык: en (немецкий)
  2. Вход в систему: john [email protected]
  3. пунктирная линия: 123456ABCD
  4. Карта: ветер-DIN-EN-1991-1-4 (ветровая нагрузка по немецкому приложению EC1)
  5. Город: Dlubal, Тифенбах (штаб-квартира Dlubal GmbH)
  6. Позиция: 49.4353975, 12.5894907 (широта, долгота)

Выполнить запрос стенки и считывать данные

Следующий скрипт отправляет запрос к веб-сервису инструмента «Geo-Zone Tool» и документирует требуемое время и содержание.


...
#%% Импорт
# База данных для считывания меток времени (стандартная, опционально) 
Импортировать дату-время как dt
# Выполнить базу данных через веб-запрос
Импорт запросов

#%% Параметры блока
# Инструмент геолокации веб-сервиса URL 
urlgz = ' https://external-crm.dlubal.com/loadzones/data.aspx'

# Параметры для запроса (замените своими значениями)
парз = {
        'язык': 'en',
        'Вход': '[email protected]'
        ' решётка': '123456ABCD'
        'Карта': 'veter-DIN-EN-1991-1-4',
        'Место': 'Dlubal, Тифенбах, Германия',
        'Позиция': '49,4353975,12,5894907'
        }
# Установить время для отмены запроса
reto=10 #p

Выполнить #%% запроса
# Отметка времени перед поиском
cdt1 = dt.datetime.now ()
# Запрос веб-сайта с помощью запросов
rgz = request.get(urlgz, params=pargz, Timeout=reto)
# Отметка времени после получения
cdt2 = dt.datetime.now ()
# Продолжительность запроса в секундах
dur=(cdt2-cdt1).total_seconds()
# Код состояния HTTP запроса
sgz=rgz.status_code
# Описание запроса
hgz=rgz.headers['Content-Type']
# Содержание веб-запроса в виде текста
tgz = rgz.text

#%% Вывод веб-запроса на консоль
txt = []
txt.append (f "Временная метка: {cdt1}") #Время ГГГГ-ММ-ДД ЧЧ:ММ:SS.SSSSSS
txt.append (f"Длительность: {dur} s") #Длительность запроса
txt.append (f «Код состояния: {rgz.status_code}"), #Код состояния HTTP (обычный: 200)
txt.append (f "Заголовок: {hgz}"), #описание содержания (обычный: текст/html; charset=utf-8)
txt.append(f"Текстовые результаты запроса:\n{tgz}") #Результаты инструмента Geo-Zone
печать ('\n'.join (txt))
...

Это приводит, например, к следующим результатам:

  1. вывод.кода#

Отметка времени: 2024-08-22 13:24:32.727006
Длительность: 2,214527
Код состояния: 200
Заголовок: текст/html; charset = utf-8
Текст запроса:
Результат 1, Результат 2, Зона, Широта, Долгота, Высота над уровнем моря, Улица, Индекс, Город, Норма, Приложение, Примечания, Правовая информация
22.5 м/с,0.32 кН/м2,1,49.4353975,12.5894907,520.69384765625,Am Zellweg 2,93464,Tiefenbach,EN 1991-1-4,DIN EN 1991-1-4
#/code#

Дополнение: Подготовка содержания веб-запроса

Следующий скрипт преобразует текст, полученный из сетевого средства Инструмент геолокации, в табличную форму. Кроме того, значения результатов отделяются от соответствующих единиц измерения и сохраняются в виде файла CSV или Excel.


...
#%% Импорт
# Строковые функции стандартной базы данных для импорта и экспорта
из io импортировать Stringio
# База данных для обработки данных
Импорт панд как pd

#%% Функции
из rsep_eval_unit(indf, cnstart='Result',):
    "''"
    Отдельные столбцы данных Frame запроса Dlubal Geo-Zone Tool с результатами по значениям и единицам измерения.

    параметры
    ----------
    indf pandas.DataFrram
        Входные данные.
    Cnstart: строка, необязательно
        Идентификатор в начале названия столбца, содержащего результаты

    Возврат
    -------
    Вых: pandas.DataFrram
        Выходные данные.

    "''"
    tmp2 = indf.loc (axis = 1) [indf.columns.str.startswith (cnstart)]
    tmp3 = pd.DataFrime ()
    для i в tmp2.columns:
        tmp3{%>

Это приводит, например, к следующим результатам:

  1. вывод.кода#

Исходный frame данных:

  1. Результат 1, Результат 2, Зона, Широта, Долгота, Высота над уровнем моря, Улица, Индекс, Город Примечания к приложению к нормативу

0 22,5 м/с 0,32 кН/м2 1 49,435398 12,589491 520,693848 Am Zellweg 2 93464 Tiefenbach EN 1991-1-4 DIN EN 1991-1-4 NaN
Рамка управляемых данных:

  1. (Результат 1, значение) (Результат 1, единица измерения) (Результат 2, значение) (Результат 2, единица измерения) Зона Широта Долгота Высота Улица Почтовый индекс Город Норматив Приложение Примечания

0 22,5 м/с 0,32 кН/м2 1 49,435398 12,589491 520,693848 Am Zellweg 2 93464 Tiefenbach EN 1991-1-4 DIN EN 1991-1-4 NaN
Вывод примера:

  1. Первый результат имеет значение 22,5. (м/с)
#/code#

Автор

Г-н Гебхардт оказывает техническую поддержку заказчикам Dlubal Software и отвечает на их запросы.

Ссылки


;