首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有简单的方法可以将zeep响应转换为json、pandas、xml?

有没有简单的方法可以将zeep响应转换为json、pandas、xml?
EN

Stack Overflow用户
提问于 2019-06-26 00:05:38
回答 3查看 3.5K关注 0票数 3

我使用的是python 3.6和zeep 3.4.0

Zeep返回原始数据,我无法将其转换为xml/json/pandas对象。

我试着用bs4从text1那里获取表格,但没有成功。序列化text1以获得json,也不走运。

代码语言:javascript
复制
from zeep import Client, Settings

settings = Settings(xml_huge_tree=True)

client = Client('http://www.cbr.ru/secinfo/secinfo.asmx?WSDL', settings=settings)
s = '2019-06-21T00:00:00'

with client.settings(raw_response=True):
    result = (client.service.IDRepoRUBXML(s))

#print(dir(result))    
text1 = (result.text)

print(text1)
#
#data = literal_eval(text1.decode('utf8'),)

def escape(t):
    """HTML-escape the text in `t`."""
    return (t.replace("&amp;","&").replace("&lt;","<" ).replace( "&gt;",">").replace("&#39;","'").replace("&quot;",'"'))

m = escape(text1)
print(m)

我需要从zeep中检索可读的xml或json/pandas表。

EN

回答 3

Stack Overflow用户

发布于 2020-12-15 02:05:43

如果你只是想从serialize_object中获得一个python dict类型,你可以指定你想要的类型。

来自zeep导入帮助器的

_json = helpers.serialize_object(zeep_object,dict)

票数 5
EN

Stack Overflow用户

发布于 2019-06-26 17:43:24

我自己找到了一种方法:)

代码语言:javascript
复制
from zeep import Client, Settings
from bs4 import BeautifulSoup

settings = Settings(xml_huge_tree=True)

client = Client('http://www.cbr.ru/secinfo/secinfo.asmx?WSDL', settings=settings)
s = '2019-06-21T00:00:00'

with client.settings(raw_response=True):
    result = (client.service.IDRepoRUBXML(s))

#print(dir(result))    
text1 = (result.text)

def escape(t):
    t = t.replace("&amp;","&")
    t1 = t.replace("&lt;","<" )
    t2 = t1.replace( "&gt;",">")
    t3 = t2.replace("&#39;","'")
    t4 = t3.replace("&quot;",'"')
    return t4

m = escape(text1)


#j = parser.feed(m)
if(m is not None):
    soup = BeautifulSoup(m,'lxml')
else:
     print("")

items = soup.find_all('item')

for item in items:
    discounts = item.find_all('dt')
    beg_6d = discounts[0]['beg']
    min_6d = discounts[0]['min']
    max_6d = discounts[0]['max']
    beg7_14 = discounts[1]['beg']
    min7_14 = discounts[1]['min']
    max7_14 = discounts[1]['max']         

    for attr in item.attrs:

        dateredemption = item.attrs['dateredemption']
        em = item.attrs['em']
        isin = item.attrs['isin']
        price = item.attrs['price_fnd']
        regn = item.attrs['regn']

    print(isin,regn,em,dateredemption,price,beg_6d,min_6d,max_6d, beg7_14,min7_14,max7_14) 
票数 0
EN

Stack Overflow用户

发布于 2020-01-27 14:01:26

您可以使用Minidom转换为XML。

代码语言:javascript
复制
from zeep import Client
import xml.dom.minidom

client = Client('http://www.dneonline.com/calculator.asmx?wsdl')

def Add(num1, num2):
    with client.settings(raw_response=True):
        return xml.dom.minidom.parseString(client.service.Add(num1, num2).content).toprettyxml(indent="   ",encoding='utf8')

print (Add(2,5))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56758078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档