В парсере, над которым я сейчас работаю, я могу найти и распечатать элементы, которые я ищу в тегах, с помощью фильтрации по стилю. Тем не менее, когда я пытаюсь извлечь из тегов внутри bs4 не находит мой результат, когда я фильтрую по стилю. Вот что у меня есть для тегов, которые работают:
eventData = soup.find_all("div", style = "margin-right: 8px; padding: 8px 0px 16px 16px; overflow: hidden; color: rgb(68, 68, 68); font-size: 15px;")
# append each event as a list within datalist
for i in range(0, len(eventData)):
eventElement = html_text.extract_text(str(eventData[i]))
numEvents.append(eventElement)
print("Events Date, Time & Location: ", eventElement)
print("# of Events:", len(numEvents))
правильный результат:
Дата, время и место события: пятница, 24 января в 17:00 EST событий: 1
и вот что не работает:
datalist = [] # empty list to hold html text
# search for the required text for events
EventName = soup.find_all("h3", style = "font-size: 17px; font-weight: 600; overflow: hidden; margin: 2px 0px 5px; line-height: 20px; display: -webkit-box; max-width: 400px; -webkit-line-clamp: 2; -webkit-box-orient: vertical; text-overflow: ellipsis;")
for i in range(0, len(EventName)):
eventName = html_text.extract_text(str(EventName[i]))
datalist.append(eventName)
print("\n")
print("Event Name: ", str(EventName))
print("# of Items: ", len(EventName))
Печать ("# of items:") говорит, что есть 0 элементов, но когда я удаляю фильтр стилей:
EventName = soup.find_all ("h3")
Результат говорит, что есть два элемента (панель поиска также имеет тег h3), и вместо этого дает результат html страницы строки, как это должно быть. Как я могу исправить это, чтобы мой результат печатал строку, как это происходит с 3 другими тегами div в моем парсере? Я знаю, что у bs4 есть некоторые проблемы с поиском подобных вещей, поэтому, если мне нужно использовать другую библиотеку, пожалуйста, дайте мне знать.
Спасибо!