Python Beautifulsoup разлагаются, удаляя элементы из элемента - PullRequest
0 голосов
/ 30 января 2020

Я получил БД файлов от theguardian.com. Мне нужно уменьшить эти файлы только до текста и удалить все объявления и другой текст. Я могу получить основной текст, но при попытке удалить нижний элемент ("div", attrs={"class": "submeta"}) он удаляет весь текст, но текст не является частью этого элемента.

Входной файл

# Decomposing
for remove1 in soup.select("figure", attrs={"class": "element-atom"}):
    remove1.decompose()
for remove2 in soup.select("aside", attrs={"data-component": "rich-link"}):
    remove2.decompose()
for remove3 in soup.select("div", attrs={"class": "submeta"}):
    remove3.decompose()

# Extraction of text
textHeadline = soup.find("h1", attrs={"class": "content__headline"})
textUnderline = soup.find("div", attrs={"class": "tonal__standfirst"})
textBody = soup.find("div", attrs={"class": "content__article-body from-content-api js-article__body"})


# Final text
reductionResult = str(textHeadline) + str(textUnderline) + str(textBody)

Спасибо за любую помощь.

1 Ответ

2 голосов
/ 30 января 2020

Используйте .find_all() вместо .select() для выбора элементов для разложения. .select() используется только с селекторами CSS:

for remove1 in soup.find_all("figure", attrs={"class": "element-atom"}):
    remove1.decompose()
for remove2 in soup.find_all("aside", attrs={"data-component": "rich-link"}):
    remove2.decompose()
for remove3 in soup.find_all("div", attrs={"class": "submeta"}):
    remove3.decompose()

textHeadline = soup.find("h1", attrs={"class": "content__headline"})
textUnderline = soup.find("div", attrs={"class": "tonal__standfirst"})
textBody = soup.find("div", attrs={"class": "content__article-body from-content-api js-article__body"})

# Final text
reductionResult = str(textHeadline) + str(textUnderline) + str(textBody)
print(reductionResult)

Отпечатки:

<h1 class="content__headline" itemprop="headline">
'Clear discrimination': South Sudanese react to exclusion from migration program
</h1><div class="tonal__standfirst u-cf">

...and so on.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...