首页 > 解决方案 > 如何将 URL 中的 XML 解析为 Excel 工作表?

问题描述

我编写了这段代码来解析从 API 访问的 URL 中的 XML 数据。我想将这些数据写入一个在设定时间段内更新的 Excel 工作表。我该怎么做呢?

import urllib.request
import xml.sax

class GoogleHandler(xml.sax.ContentHandler):
def characters(self, content):
print(content)


def startElement(self, name, attrs):
if name == ('name'):
    print("Location:", attrs)
Day.append(attrs)
if name == ("region"):
    print("Region:", attrs)
region.append(attrs)
if name == ("temp_f"):
    print("Temperature:", attrs)
temp.append(attrs)
if name == ("date"):
    print("Date:", attrs)
Date.append(attrs)
if name == ("maxtemp_f"):
    print("MaxTemp:", attrs)
MaxTemp.append(attrs)
if name == ("mintemp_f"):
    print("MinTemp:", attrs)
MinTemp.append(attrs)
if name == ("text"):
    print("Conditions:", attrs)
Condition.append(attrs)
if name == ("icon"):
    print("Icon:", attrs)
Condition.append(attrs)

xmlResponse = urllib.request.urlopen('https://api.apixu.com/v1/forecast.xml?key=b87cee31cb6e4bea8c6163500192101&q=45242&days=7')

parser = xml.sax.make_parser()
parser.setContentHandler(GoogleHandler())
parser.parse(xmlResponse)

标签: python-3.x

解决方案


要求

要从 url 获取数据,您可以使用requests库,您将实现如下内容:

r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
data = r.content # or r.text if you do not want binary data

如果 xml 不是强制性的,也许您也可以使用该r.json()方法将响应作为 json。

XML

python中解析xml文件的库很多,我一般使用lxml

Excel

要在 excel 中编写输出,同样有很多库,您可以使用Python-Excel

日程

要安排脚本的执行,您可以设置一个 cron-job(或 Windows 上的计划任务)以在需要时运行它。


推荐阅读