Я использую модуль Python bs4 для разбора HTML. Однако я столкнулся со странной ошибкой.
При загрузке HTML-страниц страниц для анализа я заметил, что BS4 распознает объекты div на некоторых страницах, но не на других, даже если конкретный объект, на который я ссылаюсь,присутствует в обоих, и пути одинаковы.
например,
<div class = "item" data-year = "19-20">
<div class = "irrelevant">...</div>
<div class = "irrelevant">...</div>
<div class = "stats-grids">...</div>
<div class = "irrelevant">...</div>
</div>
Я немного покопался и часто вижу, что нечто подобное может быть вызвано использованием Java на веб-странице, а не отображением в HTML. Однако я считаю, что это не так в этом случае, потому что BS4 правильно идентифицирует путь в других случаях, когда код остается неизменным.
При использовании ...
res = requests.get('examplesite.com')
soup = bs4.BeautifulSoup(res.text, 'html.parser')
element = soup.select('div[data-year = "19-20"] > div[class = "stats-grids"]')
На некоторых страницах того же веб-сайта элемент указан правильно. В других случаях он может находить div [data-year = "19-20"] и div [class = "stats-grids"] независимо друг от друга, но не тогда, когда я указываю, что один является потомком другого.
Другими словами, он есть, но только если я укажу, что таблицы статистики находятся в пределах года данных, он не отображается.