Cannont解析XML(空信息,而不是预期的输出)

时间:2019-06-06 12:23:21

标签: python xml-parsing python-requests

我想从here中提取一些天气预报信息。

我正在使用xml.etree.ElementTree,并要求在python 3.6(Windows)中执行此操作。

我无法获得预期的输出,有时信息显示为“无”,有时不是正确的信息。

这是我的代码:

import requests
from bs4 import BeautifulSoup
import time
import datetime
import xml.etree.ElementTree as ET


url = "http://www.aemet.es/xml/municipios/localidad_28079.xml"
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36'}

result = requests.get(url, headers=headers)

root = ET.fromstring(result.text)
hoy = datetime.date.today().strftime("%Y-%m-%d")

previsiones = {'00-24':'','00-12':'','00-06':'','06-12':'','12-18':'','18-24':''} # I will save here the info latter

for dia in root.iter('dia'):
    fecha = dia.attrib['fecha']
    if fecha == hoy:
        prevs = dia.findall('viento')
        for prev in prevs:
            horas = prev.attrib['periodo']
            print("Fecha:",fecha)
            print("Periodo:",horas)
            print("Direccion:",prev.find('direccion').text)
            print("Velocidad",prev.find('velocidad').text)

这是输出:

Fecha: 2019-06-14
Periodo: 00-24
Direccion: None
Velocidad None
Fecha: 2019-06-14
Periodo: 00-12
Direccion: None
Velocidad None
Fecha: 2019-06-14
Periodo: 12-24
Direccion: O
Velocidad 25
Fecha: 2019-06-14
Periodo: 00-06
Direccion: SO
Velocidad 10
Fecha: 2019-06-14
Periodo: 06-12
Direccion: SO
Velocidad 25
Fecha: 2019-06-14
Periodo: 12-18
Direccion: O
Velocidad 25
Fecha: 2019-06-14
Periodo: 18-24
Direccion: O
Velocidad 15

这是预期的输出:

Fecha: 2019-06-06
Periodo: 12-24
Direccion: SO
Velocidad: 30

# And so on with each time period (Periodo)

关于我在做什么错的任何想法?

1 个答案:

答案 0 :(得分:1)

for prediccion in root.iter('prediccion'):
    print(prediccion.attrib)

由于某种原因,您正在打印每个prediccion节点的属性,但没有属性,因此是空字典。

代替打印节点本身。

for prediccion in root.iter('prediccion'):
   print(prediccion)

输出

<Element 'prediccion' at 0x000002517A629A48>