Парсинг XHTML с использованием минидома
Я хочу разобрать это, чтобы получить прогноз погоды. Использование Python Minidom
<div class="pull-left" id="current-temps-cont">
<h4 class="myforecast-current">Cloudy</h4>
<h1 class="myforecast-current-lrg">57°F</h1>
<h3 class="myforecast-current-sm">14°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 не работает