Парсинг XHTML с использованием минидома

Я хочу разобрать это, чтобы получить прогноз погоды. Использование Python Minidom

                <div class="pull-left" id="current-temps-cont">
                    <h4 class="myforecast-current">Cloudy</h4>
                    <h1 class="myforecast-current-lrg">57&#176;F</h1>
                    <h3 class="myforecast-current-sm">14&#176;C</h3>
                </div>
            </div>

Теперь я не могу просто получить getElementsByTagName("h4"), потому что я буду выполнять этот анализ на многих погодных сайтах, поэтому количество тегов h4 может быть разным на каждом сайте. Но вся информация, которая мне нужна, независимо от того, какое состояние я выберу, будет находиться под id="current-temp-cont"

В настоящее время я работаю с чем-то вроде этого, но я продолжаю

import sys
import xml.dom.minidom

document = xml.dom.minidom.parse(sys.argv[1])

weather = document.getElementById("current-temps-cont")
weatherReal = weather.getElementsByTagName("h4")
print(weatherReal)

~ Когда я бегу, я получаю. Может кто-нибудь объяснить, что мне не хватает или если я подхожу к этому неправильно?

Traceback (most recent call last):
 File "x.py", line 7, in <module>
weatherReal = weather.getElementsByTagName("h4")
AttributeError: 'NoneType' object has no attribute 'getElementsByTagName'

1 ответ

К сожалению, это ошибка, которая никогда не была устранена (да, уже давно). Вы можете просмотреть исходный код getElementById() Работайте здесь, если у вас есть время.

Вы можете обойти проблему, выбрав элементы по имени тега, а затем отфильтровав их, используя комбинацию hasAttribute() а также getAttribute() функции, как я сделал в моем решении здесь: Minidom getElementById не работает

Другие вопросы по тегам