Запись пустых значений из soap, полученных с помощью SimplifiedDo c с использованием python - PullRequest
1 голос
/ 29 января 2020

Я получаю конверт SOAP из конечной точки, а затем пытаюсь получить данные из полей. Я использую simpleified_scrapy, и это сработало правильно, но для пустых значений выдает ошибку. Строка SOAP / xml загружается в переменную, а затем я выполняю синтаксический анализ, чтобы найти указанный мной заголовочный тег. Я пишу значения в CSV, используя приведенный ниже код, если есть тег, который не имеет значения в нем, я получаю ошибку:

  File "C:/Users/syorke/PycharmProjects/DMBStart/API/GoodScripts/DebtsGetDebts.py", line 45, in <module>
    , c.SettlementStatus.text
AttributeError: 'List' object has no attribute 'text

В коде ниже тега SettlementStatus это поле это не имеет значения:

    fh.write(cols)
    for c in Categories:
        fh.write('%s\n' % [(c.FileNumber.text
                            , c.DebtId.text
                            , c.VendorId.text
                            , c.DebtType.text
                            , c.SettlementStatus.text
                            # , c.AccountStatus.text
                            , c.IsStatementIncluded.text
                            , c.PrimaryName.text
                            , c.ApplicantType.text
                            , c.OriginalBalance.text
                            , c.MinimumPayment.text
                            )])
fh.close()

Я попытался добавить if на вкладке, по сути, сказать, есть ли значение для записи значения, иначе write '', но это не сработало. Спасибо за любые указания или помощь.

1 Ответ

1 голос
/ 07 февраля 2020

Я заполняю ответ для проверки другими пользователями.

Используйте последнюю версию или используйте метод выбора.

[(c.select('FileNumber>text()') , c.select('DebtId>text()') , c.select('VendorId>text()') , c.select('DebtType>text()') , c.select('SettlementStatus>text()') , c.select('AccountStatus>text()') , c.select('IsStatementIncluded>text()') , c.select('PrimaryName>text()') , c.select('ApplicantType>text()') , c.select('OriginalBalance>text()') , c.select('MinimumPayment>text()') )]

Вот еще несколько примеров SimplifiedDo c: https://github.com/yiyedata/simplified-scrapy-demo/tree/master/doc_examples

...