我试图从一个包含所有公司公共数据(openapi)的政府网站获取数据,但是政府开发人员发布了一个非常有限的文档。我发现了一个使用wsdl的python库,它的名称是litex.regon公司(可以在pypi上找到)。在设置一个工作连接的初始问题之后,我遇到了以下错误消息:
Traceback (most recent call last):
File "C:/Users/Adrian/path/core.py", line 19, in <module>
search_nip('1250786189')
File "C:/Users/Adrian/path/core.py", line 16, in search_nip
print(api.full_report(str(result[0].Regon), report_name='PublDaneRaportDzialalnosciPrawnej'))
File "C:\Users\Adrian\AppData\Local\Programs\Python\Python36-32\lib\site-packages\litex\regon\__init__.py", line 257, in full_report
get_message_element(mesg, 0, '//DanePobierzPelnyRaportResult/text()')[0]
IndexError: list index out of range
以下是我的定义,应该获取特定公司的报告(根据公司注册期间分配的公司id进行搜索):
^{pr2}$代码中给出的SERVICE_URL
和USER_KEY
是用于公共可用的工作测试环境的。以下是__init__.py
中api.full_report
的摘要:
def full_report(self, regon, report_name):
mesg = self.call(
FULL_REPORT_ENVELOPE,
regon=regon,
report_name=report_name
)
result = objectify.fromstring(
get_message_element(mesg, 0, '//DanePobierzPelnyRaportResult/text()')[0]
)
if not len(result):
raise REGONAPIError('Getting full report failed.')
return result[0].dane
最后的代码是完整的_REPORT_信封,它(我猜)负责wsdl通信:
FULL_REPORT_ENVELOPE = '''\
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ns="http://CIS/BIR/PUBL/2014/07">
<soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
<wsa:To>{api.service_url}</wsa:To>
<wsa:Action>http://CIS/BIR/PUBL/2014/07/IUslugaBIRzewnPubl/DanePobierzPelnyRaport</wsa:Action>
</soap:Header>
<soap:Body>
<ns:DanePobierzPelnyRaport>
<ns:pRegon>{regon}</ns:pRegon>
<ns:pNazwaRaportu>{report_name}</ns:pNazwaRaportu>
</ns:DanePobierzPelnyRaport>
</soap:Body>
</soap:Envelope>
'''
我会感谢所有的帮助!谢谢您!在
目前没有回答
相关问题 更多 >
编程相关推荐