код в который нужно вставить алгоритм обработки
import requests
import pandas as pd
headers = {
'accept': 'application/json, text/plain, */*',
'accept-language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
'authorization': 'Bearer токен',
'content-type': 'application/json',
'origin': 'сайт',
'priority': 'u=1, i',
'referer': 'https://операционная вкладка',
'sec-ch-ua': '"Chromium";v="134", "Not:A-Brand";v="24", "Google Chrome";v="134"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36',
'x-wbwh-language': 'ru',
'x-wh-egeo': 'Bearer токен # Замените на ваш токен
}
shk_ids = [
130 , 501, 384, ]
results = []
for shk_id in shk_ids:
json_data = {
'shk_id': shk_id,
}
try:
response = requests.post(
'https://сайт операции',
headers=headers,
json=json_data,
timeout=10
)
if response.status_code == 200:
result_data = response.json()
print(f"Результат для shk_id {shk_id}: {result_data}")
if isinstance(result_data, list):
for item in result_data:
item['id'] = shk_id
results.append(item)
elif isinstance(result_data, dict):
result_data['id'] = shk_id
results.append(result_data)
else:
print(f"Непредвиденная структура ответа для shk_id {shk_id}: {result_data}")
print(f"Ответ на shk_id {shk_id} получен.")
else:
print(f"Ошибка запроса для shk_id {shk_id}: {response.status_code}, {response.text}")
except requests.exceptions.RequestException as e:
print(f"Произошла ошибка для shk_id {shk_id}: {e}")
if results:
df = pd.DataFrame(results)
df = df[['dt', 'state_id', 'state_descr', 'place_cod', 'place_name_',
'place_name', 'wh_id', 'office_id', 'box_id',
'container_id', 'tare_type', 'state_employee_id',
'state_employee_name', 'nuller', 'tare_id',
'sticker_id', 'goods_sticker_type', 'correction_dt']]
output_file = 'shk_history_results.xlsx'
df.to_excel(output_file, index=False, engine='openpyxl')
print(f"Данные сохранены в файл: {output_file}")
else:
print("Не удалось получить данные для сохранения.")
вот пример рабочего алгоритма , проблема в том что там парсинг происходит через силениум, js и получение таблицы. это долго и в будущем хочу все это перенести в тг бота где работа с силениумом под вопросом .
# Получаем тело таблицы и весь её текст через JavaScript
table_body = driver.find_element(By.CSS_SELECTOR, "table.mat-mdc-table tbody")
table_text = driver.execute_script("return arguments[0].innerText;", table_body)
# Если обнаружен признак "Сортировка брака - нет дефекта", сразу присваиваем результат
if "Сортировка брака - нет дефекта" in table_text:
shk_value = "брак не с нашего города"
# Если фразы "ОбработкаБрака Б4" нет — то тоже сразу выходим
elif "ТБ4" not in table_text:
shk_value = "брак не с нашего города"
else:
# Если фраза найдена, то получаем список строк таблицы для детального анализа
rows = driver.find_elements(By.CSS_SELECTOR, "table.mat-mdc-table tbody tr")
# Перебираем строки с конца (порядок событий важен)
row_texts = [row.text for row in reversed(rows)]
spusk_indices = []
obrabotka_indices = []
for idx_row, text in enumerate(row_texts):
if ("Спуск с хранения Б3" in text) or ("Собран на потоковой сборке" in text):
spusk_indices.append(idx_row)
if "ОбработкаБрака Б4" in text:
obrabotka_indices.append(idx_row)
found = False
for sp in spusk_indices:
for ob in obrabotka_indices:
if ob < sp and (sp - ob) <= 10:
found = True
break
if found:
break
if found:
shk_value = "брак с нашего хранения"
else:
shk_value = "брак выявлен у нас"
data.append([shk, shk_value])
print(f"ШК {shk} обработан: {shk_value}")
Сколько не пытался адаптировать этот алгоритм , не получается.