Поиск элементов по стилю с помощью pandas - PullRequest
0 голосов
/ 13 января 2020

В парсере, над которым я сейчас работаю, я могу найти и распечатать элементы, которые я ищу в тегах, с помощью фильтрации по стилю. Тем не менее, когда я пытаюсь извлечь из тегов внутри 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 есть некоторые проблемы с поиском подобных вещей, поэтому, если мне нужно использовать другую библиотеку, пожалуйста, дайте мне знать.

Спасибо!

1 Ответ

0 голосов
/ 13 января 2020

Я обнаружил проблему: мне нужно было изменить

print("Event Name: ", str(EventName)) 

на:

print("Event Name: ", str(eventName))

, что затем дало мне правильный результат имени события. Самые простые ошибки.

...