Python索引器错误:列表索引超出范围,特定py库出现问题

2024-04-28 12:59:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从一个包含所有公司公共数据(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_URLUSER_KEY是用于公共可用的工作测试环境的。以下是__init__.pyapi.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>
'''

我会感谢所有的帮助!谢谢您!在


Tags: namepyreporthttpline公司resultusers