1

この Soap API http://telemetriaws1.ana.gov.br/ServiceANA.asmx?WSDLを読み込もうとしています。DadosHidrometeorologicosGerais関数を呼び出そうとすると、次のエラーが発生します。

File "/home/1234/.local/share/virtualenvs/data_getter-1W9NAele/lib/python3.6/site-packages/zeep/xsd/schema.py", line 570, in _get_component
return items[qname]
KeyError: <lxml.etree.QName object at 0x7f2e93fa6d00>
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
zeep.exceptions.LookupError: No element 'DocumentElement' in namespace None. Available elements are: NewDataSet

他のすべての機能は正常に動作しています。

ここに私のコード:

 from zeep import Client

 client = Client('http://telemetriaws1.ana.gov.br/ServiceANA.asmx?WSDL')
 client.service.DadosHidrometeorologicosGerais(codEstacao='86450500', dataInicio='05/05/2018', dataFim='05/05/2018')
4

1 に答える 1

0

よくわかりませんが、xml ファイルは何らかのデータ セットから生成されているようです。「id」属性が要素の識別と一致しません。

考えられる解決策は、XML の zeep 解析を省略して生データを返すことです。モジュールxml.etree.ElementTreeを使用して解析します。

from zeep import Client, Settings
import xml.etree.ElementTree as ET

settings = Settings(force_https=False, raw_response=True)
WSDL = 'http://telemetriaws1.ana.gov.br/ServiceANA.asmx?WSDL'

client = Client(WSDL, settings=settings)

response = client.service.DadosHidrometeorologicosGerais(codEstacao='86450500',
                                                     dataInicio='05/05/2018',
                                                     dataFim='05/05/2018')

root = ET.fromstring(response.content)
于 2018-11-09T00:01:57.960 に答える