Как очистить текст рядом с конечным тегом в BeautifulSoup4? - PullRequest
0 голосов
/ 19 октября 2018

Как я могу очистить этот html?

<h3>
<span class="method">GET&nbsp;</span>
[/r/
<em class="placeholder">subreddit</em>
]/api/user_flair
<span class="oauth-scope-list"><a href="https://github.com/reddit/reddit/wiki/OAuth2"><span class="api-badge oauth-scope">flair</span></a>
</span>
</h3>

Есть ли способ получить текст ниже тега span.Я знаю, что используя next или next_sibling, я могу получить следующий текст.Но есть ли другой способ обойти это что-то вроде h3.span

1 Ответ

0 голосов
/ 19 октября 2018

Таким образом, вы можете поймать ваш text

from bs4 import BeautifulSoup
soup = BeautifulSoup("""<h3>
                    <span class="method">GET&nbsp;</span>
                    [/r/
                    <em class="placeholder">subreddit</em>
                    ]/api/user_flair
                    <span class="oauth-scope-list"><a href="https://github.com/reddit/reddit/wiki/OAuth2"><span class="api-badge oauth-scope">flair</span></a>
                    </span>
                    </h3>""")
api_badges = soup.find_all('span', {'class': 'api-badge oauth-scope'})
api_badges_txt = [api_badge.text for api_badge in api_badges]

Выход

['flair']

Если вы используете

add_space = soup.find('em').next_sibling.replace('\n', '').strip()
soup.find('h3').get_text(strip=True).replace(add_space, add_space + ' ')

, вы получите 'GET[/r/subreddit]/api/user_flair flair'

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