Скачивание выписки на python c сайта platformaofd.ru

Задание закрыто
Статус рабочей области:Поиск исполнителя
Стоимость:3 000 рублей
Срок выполнения:4 дня
Варианты оплаты:По договоренности
Дата публикации:2024-10-01 10:17
Обновлено:2024-10-03 09:53
Был на сайте:2024-10-24 16:36

Скачивание выписки на python c сайта platformaofd.ru

 
Задача

Скрипт должен подключаться к lk.platformaofd.ru. Авторизация keycloak oAuth2. Далее заказывать выписку "Товарные позиции" и скачивать её по готовности.
upd: не использовать selenium.

Оставлять заявки могут только авторизованные пользователи.
Исполнитель по этому заданию выбран.
Станислав Гулевич
Специализация: Тексты
  • 3 000 руб5 дней
1. Установка необходимых библиотек

pip install requests selenium beautifulsoup4
2. Пример скрипта на Python

import time
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service

# Укажите путь к вашему драйверу Chrome или используйте другой драйвер
service = Service('path/to/chromedriver')
driver = webdriver.Chrome(service=service)

# URL сайта
base_url = "https://platformaofd.ru/"

# Авторизация
def login_to_platform(driver, login, password):
driver.get(f"{base_url}/login") # URL страницы входа

# Ввод логина
login_field = driver.find_element(By.ID, "login") # Возможно, нужно изменить ID поля
login_field.send_keys(login)

# Ввод пароля
password_field = driver.find_element(By.ID, "password") # Возможно, нужно изменить ID поля
password_field.send_keys(password)

# Нажатие кнопки Вход
login_button = driver.find_element(By.XPATH, '//button[@type="submit"]') # Найдите кнопку входа
login_button.click()

time.sleep(5) # Ожидание загрузки страницы после входа

# Заказ выписки
def order_report(driver):
# Переход на страницу заказа выписки
driver.get(f"{base_url}/order-report") # Возможно, нужно изменить URL

# Находим и нажимаем кнопку заказа выписки
order_button = driver.find_element(By.ID, "order_report_button") # Найдите нужную кнопку
order_button.click()

time.sleep(5) # Ожидание обработки заказа

# Проверка готовности выписки
def check_report_status(driver):
driver.get(f"{base_url}/report-status") # Страница проверки статуса отчета

# Парсинг статуса с использованием BeautifulSoup
soup = BeautifulSoup(driver.page_source, 'html.parser')
status = soup.find('div', {'class': 'status'}) # Найдите нужный элемент со статусом
return status.text.strip() if status else None

....
Полный код при выборе
Константин
Специализация: Программирование и IT
  • 5 000 руб5 дней
Здравствуйте, сделаю
 
Женя Серая
Специализация: Программирование и IT
  • 3 000 руб5 дней
сделаю быстро и качественно.
Добрый день !
Стек именно питон ?
В целом проблем нет, просто интересно почему
Дамир Викторович Радионов

Делаю как себе, - старательно и до самого конца.

Специализация: Программирование и IT
  • 3 000 руб4 дня
Здравствуйте. Сделаю.
Добрый день!

Я готов выполнить ваш заказ и предоставить вам высококачественное и профессиональное исполнение работ. Пожалуйста, уточните все детали проекта, чтобы я мог начать работу. Готов обсудить любые дополнительные требования и пожелания.

С нетерпением жду начала сотрудничества с вами!
Андрей Бетко

Любую проблему можно решить!

Специализация: Программирование и IT
  • 3 000 руб4 дня
Здравствуйте!

Меня зовут Андрей, и ваш проект по разработке скрипта для автоматического запроса выписки "Товарные позиции" на платформе мне очень интересен. У меня есть опыт работы с авторизацией через OAuth2 и взаимодействием с REST API, и я готов реализовать вашу задачу.

Ранее я уже успешно выполнял проекты, связанные с автоматизацией работы с API, включая получение данных и загрузку отчетов. Я уже разработал часть кода для вашего проекта, который позволяет подключаться к системе, авторизоваться через Keycloak, запрашивать выписку и загружать её по готовности. Вот пример реализованного кода:

def download_report(report_id, access_token):

headers = {
'Authorization': f'Bearer {access_token}'
}
while True:
# Проверяем статус отчета
response = requests.get(f"{api_url}/report_status/{report_id}", headers=headers)
if response.status_code == 200:
status = response.json().get('status')
if status == 'READY':
# Скачиваем отчет
report_response = requests.get(f"{api_url}/download_report/{report_id}", headers=headers)
if report_response.status_code == 200:
with open('goods_report.xlsx', 'wb') as f:
f.write(report_response.content)
print("Отчет успешно скачан.")
else:
raise Exception(f"Ошибка при скачивании отчета: {report_response.text}")
break
elif status == 'FAILED':
raise Exception("Отчет не был успешно сгенерирован.")
else:
raise Exception(f"Ошибка при проверке статуса отчета: {response.text}")


Работая со мной, вы получите преимущества: я всегда работаю по договору и предлагаю бесплатные консультации, чтобы обсудить детали проекта и убедиться, что все соответствует вашим ожиданиям.

Буду рад обсудить детали и предложить лучшее решение для вашего проекта!

Оставлять заявки могут только авторизованные пользователи.