如何使用Python从webservice请求中将文本转换为表格或.csv文件

2024-09-21 01:17:21 发布

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

我在python中导入了请求和Beautifulsoup4,并从Web服务中请求xml。 我就是这么做的:

import requests
from bs4 import BeautifulSoup as bs
session_request = requests.session()
response = session_requestion.post('',data='',headers='')
soup = bs(response.text,'lxml')
fruitresult = soup.find_all('getfruitbysql')

print(fruitresult)

然后,它显示:

[<getresultbysql>
&lt;DataSet&gt;
&lt;Table&gt;
     &lt;Fruit&gt;Apple&lt;/Fruit&gt;
     &lt;NumberOf&gt;10&lt;/NumberOf&gt;
     &lt;Price&gt;12&lt;/Price&gt;
   &lt;/Table&gt;
   &lt;Table&gt;
     &lt;Fruit&gt;Banana&lt;/Fruit&gt;
     &lt;NumberOf&gt;18&lt;/NumberOf&gt;
     &lt;Price&gt;10&lt;/Price&gt;
   &lt;/Table&gt;   
&lt;/DataSet&gt;
</getresultbysql>]

如何将此结果转换为dataframe或.csv,如下所示:

--------------------------
| Fruit | Number | Price |
--------------------------
| Apple |   10   |   12  |
| Banana|   18   |   10  |
--------------------------

非常感谢

以下是整个xml响应:

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<getresultbysqlResponse xmlns="http://tempuri.org/">
<getresultbysql>
&lt;DataSet&gt;
&lt;Table&gt;
     &lt;Fruit&gt;Apple&lt;/Fruit&gt;
     &lt;NumberOf&gt;10&lt;/NumberOf&gt;
     &lt;Price&gt;12&lt;/Price&gt;
   &lt;/Table&gt;
   &lt;Table&gt;
     &lt;Fruit&gt;Banana&lt;/Fruit&gt;
     &lt;NumberOf&gt;18&lt;/NumberOf&gt;
     &lt;Price&gt;10&lt;/Price&gt;
   &lt;/Table&gt;   
&lt;/DataSet&gt;
</getresultbysql>
</getresultbysqlResponse>
</soap:Body>
</soap:Envelope>

Tags: orgltgthttpapplesessiontablexml
1条回答
网友
1楼 · 发布于 2024-09-21 01:17:21

假设已准备好soup对象,可以尝试使用lxml提取数据:

from lxml import etree


xml_text = soup.find('getresultbysql').text
root = etree.fromstring(xml_text)

data = [['Fruit', 'Number', 'Price']]
for table in root.findall('Table'):
    data.append([i.text for i in table.getchildren()])

结果如下:

╔════════╦════════╦═══════╗
║ Fruit  ║ Number ║ Price ║
╠════════╬════════╬═══════╣
║ Apple  ║     10 ║    12 ║
║ Banana ║     18 ║    10 ║
╚════════╩════════╩═══════╝

相关问题 更多 >

    热门问题