如何将URL中的XML解析为Excel工作表?

时间:2019-01-21 16:42:49

标签: python-3.x

我已经编写了这段代码来解析我通过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)

1 个答案:

答案 0 :(得分:0)

请求

要从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上的计划任务)以在需要时运行它。