Анализ значения тегов <cap:event>, <cap:urgency> с использованием Feedparser в Python из фида Atom/xml
Я использую feedparser для анализа данных из файла канала Atom/xml. Ссылка на файл:
https://alerts.weather.gov/cap/oh.php?x=0
Это канал, который создается Национальной метеорологической службой для предоставления информации о погодных предупреждениях. В этом фиде используется обмен сообщениями с предупреждениями Common Alert Protocol (CAP). Я пытаюсь разобрать следующее:
<summary>...AIR QUALITY ADVISORY IN EFFECT UNTIL MIDNIGHT EDT TONIGHT... The Miami Valley Regional Planning Commission and the Regional Air Pollution Control Agency have issued an Air Pollution and Air Quality Advisory for Montgomery, Miami, Greene, Clark, Preble and Darke counties in the Miami Valley Region, until midnight EDT tonight.</summary>
<cap:event>Air Quality Alert</cap:event>
<cap:effective>2020-06-08T15:15:00-04:00</cap:effective>
<cap:expires>2020-06-09T19:30:00-04:00</cap:expires>
<cap:status>Actual</cap:status>
<cap:msgType>Alert</cap:msgType>
<cap:category>Met</cap:category>
<cap:urgency>Unknown</cap:urgency>
<cap:severity>Unknown</cap:severity>
<cap:certainty>Unknown</cap:certainty>
<cap:areaDesc>Clark; Darke; Greene; Miami; Montgomery; Preble</cap:areaDesc>
Я могу разобрать сводку, но не могу разобрать теги, например, используя feedparser. Это то, что мне нужно для проекта Raspberry Pi. Я пробовал много разных подходов, таких как:
d = feedparser.parse('http://alerts.weather.gov/cap/ms.php?x=0')
print (d.entries[0].['cap_event'])
print (d.entries[0]['cap:event'])
Когда я пытаюсь напечатать (d.entries[0].['Cap_event']), я получаю следующую ошибку:
% Запустить файл feedparser2.py "/home/n8mdp/MyPythonApps/feedparser2.py", строка 13 print (d['entry'][0].['Cap:event']) ^ SyntaxError: недопустимый синтаксис
Если я использую print (d.entries[0]['cap_event'], он получит следующую ошибку: Traceback (последний вызов последним): файл "/home/n8mdp/MyPythonApps/feedparser2.py", строка 13, в печати (d ['entry'][0]['cap:event']) Файл "/home/n8mdp/.thonny/Python36/lib/python3.6/site-packages/feedparser.py", строка 356, в getitem return dict.getitem(self, key) KeyError: 'cap: event'
Использование Thonny 2.1.16 в Ubuntu 18.04.4 LTS. Feedparser установлен.
Есть ли у кого-нибудь хорошее предложение о том, как я могу проанализировать эти теги с помощью feedparser в python?
Заранее спасибо!
1 ответ
После более глубокого исследования я определил, что работает следующее:
print (alertFeed['entries'][nws_entry_id]['id'])
print (alertFeed['entries'][nws_entry_id]['summary'])
print (alertFeed['entries'][nws_entry_id]['cap_event'])
print (alertFeed['entries'][nws_entry_id]['cap_urgency'])
print (alertFeed['entries'][nws_entry_id]['cap_areadesc'])
nws_entry_id - это индекс количества записей в ленте. Пришлось на самом деле просмотреть фид, возвращенный анализатором, чтобы определить это. Теперь код работает как положено.