首页 > 解决方案 > BeautifulSoup:获取标签文本到某个标签

问题描述

我想获取 HTML 页面上所有显示的文本,直到某个标签被命中。例如,我想获取页面上所有显示的文本,直到命中 id 为“end_content”的标签。

有没有办法用 BeautifulSoup 做到这一点?这将类似于 soup.get_text() 方法,除了它会在遇到 ID 为“end_content”的标签后停止获取文本。

标签: pythonbeautifulsoupscrape

解决方案


我会做以下事情:

html = (
    '<h1>HEY!</h1>'
    '<div>'
        'How are'
        '<h2>you?</h2>'
        '<div id="end_content">END</div>'
    '</div>'
    'Some other text'
)

soup = BeautifulSoup(html, 'lxml')
>>> soup.select_one('#end_content').find_all_previous(string=True)[::-1]
['HEY!', 'How are', 'you?']

推荐阅读