Возьмите содержимое одного тега из XML-файла с модулем запросов

Я делаю запрос с модулем запросов python к службе мыла с этим кодом:

response = requests.get(url,data=body,headers=headers)

и служба вернет этот xml в качестве ответа:

<?xml version = "1.0" encoding = "utf-8"?>
    <soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:aa = "example.com/api"><soap:Body>
            <aa:GetStockFileResponse> GetStockFileResponseType
                <aa:TestMode> boolean </aa:TestMode>
                <aa:Errors> ArrayOfError
                    <aa:Error> Error
                        <aa:Code> int </aa:Code>
                        <aa:Description> string </aa:Description>
                    </aa:Error>
                </aa:Errors>
                <aa:Warnings> ArrayOfWarning
                    <aa:Warning> Warning
                        <aa:Code> int </aa:Code>
                        <aa:Description> string </aa:Description>
                    </aa:Warning>
                </aa:Warnings>
                <aa:StockFileFormat> StockFileFormat (string) </aa:StockFileFormat>
                <aa:FieldDelimiter> StringLength1 (string) </aa:FieldDelimiter>
                <aa:File> base64Binary </aa:File>
            </aa:GetStockFileResponse>
        </soap:Body></soap:Envelope>

Мне нужно записать в файл csv содержимое <aa:File> base64Binary </aa:File>, то есть файл csv с кодировкой base64. Мой код для написания ответа:

with open ('test.csv','wb') as f:
    f.write (response.content)

которые явно пишут весь xml ... Как брать только контент <aa:File> base64Binary </aa:File>?

Это проблема синтаксического анализа xml и не имеет ничего общего с запросами python. Любой синтаксический анализатор xml решит вашу проблему, поэтому выберите один и используйте его.

bruno desthuilliers 02.05.2018 13:05
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
100
1

Ответы 1

Что-то вроде этого было бы решением?

import re

xmlText = '<foo>Foo</foo><aa:File> base64Binary </aa:File><bar>Bar</bar>'

# Target to extract: " base64Binary "

content = re.findall(r'<aa:File>(.+?)</aa:File>', xmlText)

print(content)  # outputs " base64Binary "

Обратите внимание, что ответы только на код не приветствуются.

GhostCat 02.05.2018 14:55

Я думаю, лучше использовать парсер, как сказал @bruno desthuilliers. Я пытаюсь решить с помощью xml.etree.ElementTree, любые предложения приветствуются

twindad 02.05.2018 19:25

Другие вопросы по теме