2017-01-18 6 views
0

Я использую запросы python для отправки запроса на сервер. Результат возвращается как ответ REST. Теперь мне нужно, чтобы получить различные поля или секции объекта ответа, как .... Мой запрос сценарий как:Анализ ответа REST с использованием Python

import json 
import requests 

proxies = { 
    'http': 'http://10.10.80.12:3128', 
    'https': 'http://10.10.80.12:3128' 
} 
url = 'http://achecker.ca/checkacc.php' 

payload = {'uri': 'https://www.google.com', 
     'id': 'XXXXXXXXXXXXXXXXXXXXXXXXXX', 
     'output': 'rest', 
     'guide': 'WCAG2-AA', 
     'offset': '10' 
     } 

response = requests.get(url,params=payload,proxies=proxies) 
print response.text 

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

<resultset> 
 
<summary> 
 
<status>FAIL</status> 
 
<sessionID>8e03e40492a7f16a2b63c47b07588f81c746faca</sessionID> 
 
<NumOfErrors>2</NumOfErrors> 
 
<NumOfLikelyProblems>1</NumOfLikelyProblems> 
 
<NumOfPotentialProblems>113</NumOfPotentialProblems> 
 

 
<guidelines> 
 
<guideline>WCAG 2.0 (Level AA)</guideline> 
 

 
</guidelines> 
 
</summary> 
 
</resultset> 
 

Из приведенного выше результата, я хочу, чтобы получить статус, NumOfErrors, NumOfLikelyProblems, NumOfPotentialProblems. Beautifulsoup может быть решением, но я хочу сделать это по-другому.

ответ

0

Ответ, который вы получаете, представлен в формате xml. Вам нужно преобразовать следующую строку xml в словарь. Для вышеуказанной задачи вы можете использовать xmltodict (https://github.com/martinblech/xmltodict). Процесс выглядит следующим образом: -

import json 
import xmltodict 
response_text = response.text 
response_dict = json.dumps(xmltodict.parse(response_text)). 

Полученный ДИКТ для вышеупомянутого ответа будет следующим

{ 
    "resultset": { 
    "summary": { 
     "status": "FAIL", 
     "sessionID": "8e03e40492a7f16a2b63c47b07588f81c746faca", 
     "NumOfErrors": "2", 
     "NumOfLikelyProblems": "1", 
     "NumOfPotentialProblems": "113", 
     "guidelines": { 
     "guideline": "WCAG 2.0 (Level AA)" 
     } 
    } 
    } 
} 

Теперь это просто словарь, и вы можете получить доступ ключи и их значения. Надеюсь, это решит вашу проблему.

+0

Сэр, я ценю своевременный ответ, и это определенно поможет мне. Но я не могу получить словарь, используя: response_dict ['summary'] ['NumOfErrors'] –

+0

Это ошибка, которую я получаю. TypeError: строковые индексы должны быть целыми числами, а не str –

+0

Чтобы напечатать использование NumOfError response_dict ['resultset'] ['summary'] ['NumOfErrors'] –