Как правильно написать алгоритм с использованием библиотеки Python Requests?

Какой алгоритм обработки данных следует вставить в приведенный код? <br/> <pre><code class="python">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):  
  • 9 апреля 2025 г. 13:55
Ответы на вопрос 1
Чтобы завершить код, который вы предоставили, нужно добавить обработку данных, полученных в виде словаря (dict), и завершить цикл. Предлагаю следующий алгоритм обработки данных:

1. Убедитесь, что ответ содержит необходимые ключи и значения.
2. Добавьте уникальный идентификатор `shk_id` к каждому элементу, который вы собираете в результирующий список.
3. Обработайте данные, как это делается для списка, если ответ является словарем.
4. В случае возникновения ошибки, обработайте исключения (например, ошибки сети или парсинга JSON).

Вот обновленный код с добавленной обработкой данных:

```python
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  # Добавляем идентификатор shk_id  
                    results.append(item)  
            elif isinstance(result_data, dict):  
                # Проверяем, содержит ли словарь необходимые ключи
                if 'desired_key1' in result_data and 'desired_key2' in result_data:  # Замените на ваши ключи
                    result_data['id'] = shk_id  # Добавляем идентификатор
                    results.append(result_data)  
                else:
                    print(f"Необходимые ключи отсутствуют в результатах для shk_id {shk_id}")

        else:
            print(f"Ошибка при получении данных для shk_id {shk_id}: {response.status_code}")

    except requests.RequestException as e:  
        print(f"Ошибка сети при запросе для shk_id {shk_id}: {e}")  
    except ValueError:  
        print(f"Ошибка при парсинге JSON для shk_id {shk_id}")  

# Преобразуем данные в DataFrame
df = pd.DataFrame(results)
print(df)
```

В этом коде мы добавили обработку случаев, когда ответ является словарем, и проверили наличие необходимых ключей в этом словаре. Также мы преобразуем результы в `DataFrame` из библиотеки `pandas` в конце, чтобы удобнее с ними работать. Не забудьте заменить `'desired_key1'` и `'desired_key2'` на реальные ключи, которые вы ожидаете получить в словаре ответа.
Похожие вопросы