Разбор XHTML с использованием минидома - PullRequest
0 голосов
/ 02 мая 2018

Я хочу разобрать это, чтобы получить прогноз погоды. Использование 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 Ответ

0 голосов
/ 02 мая 2018

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

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

...