Я пытаюсь извлечь ключевые слова поиска из SOAP XML-схемы с BeautifulSoup и не могу понять, как извлечь атрибуты значения.
Я пытался использовать soap.find_all
, но это не позволит мне извлечь атрибут значения.
Вот что у меня есть:
soap = requests.get('http://ecp.iedadata.org/soap_search_schema.xsd')
soapXML = soap.content.decode("utf-8")
soapSoup = BeautifulSoup(soapXML, "xml")
level1 = soapSoup.findAll('xs:attribute', {'name':'level1'})[0]
level1['value']
И вот тут у меня проблема. Согласно документации BeautifulSoup это должно вывести все атрибуты 'value'.
print(level1):
<xs:attribute name="level1" use="optional">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value=""/>
<xs:enumeration value="alteration"/>
<xs:enumeration value="igneous"/>
<xs:enumeration value="metamorphic"/>
<xs:enumeration value="notfound"/>
<xs:enumeration value="ore"/>
<xs:enumeration value="sedimentary"/>
<xs:enumeration value="vein"/>
<xs:enumeration value="xenolith"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
Итак, как вы можете видеть, я пытаюсь получить текст из атрибута value во всех тегах перечисления xs :. Конечным результатом будет список поисковых терминов для level1. i.e.:
(изменение, магматическое, метаморфическое, не найденное, руда, осадочные, жилы, ксенолит)
Я не могу просто вызвать тег перечисления xs: так как существует несколько ключевых слов (т. Е. Level2, level3, SampleType ... и т. Д.), И у каждого из них разные значения перечисления xs :.
Вот ошибка в последней строке (level1 ['value'])
KeyError Traceback (последний вызов был последним)
в
----> 1 level1test ['value']
~ / anaconda3 / envs / py37 / lib / python3.7 / site-packages / bs4 / element.py в getitem (self, key)
1069 "" "tag [key] возвращает значение атрибута 'key' для тега,
1070 и выбрасывает исключение, если его там нет.
-> 1071 вернуть self.attrs [ключ]
1072
1073 def iter (self):
KeyError: 'value'