python-3.x - 如何将 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)
解决方案
要求
要从 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 上的计划任务)以在需要时运行它。
推荐阅读
- python - 对于带有 numpy/pandas 的循环(遍历列标题)
- php - 在表单页面上显示表单错误消息
- azure - Xamarin 文本 blob Azure 存储
- c# - C# UWP BluetoothLEDevice.FromIdAsync 停止工作
- azure - Azure:Microsoft.Compute 资源提供商在“注册”中停留了大约一天
- vb.net - 在 uwp 中处理 excel 文件
- javascript - 更新数据表输入字段并在输入更改时自动计算总数
- rust - 从 Rust 向 C 函数提供`char **` 参数?
- c++ - Qt:窗口图标质量不好
- c# - 如何通过我的实体基类上的属性过滤从实体框架返回的所有内容