如何使用 Beautiful 使用 select() 和特定的 CSS 选择器从网站中提取文本内容

How to extract Text Content from a Web site using Beautiful using select() and specific CSS Selectors

我正在学习使用 Python 和 BeautifulSoup 从网站中提取内容。

这是 HTML 结构:

<div id="preview-prediction" class="two-cols rc-b rc-r">
                    <span style="position: absolute; top: 0.5em; left: 1em; color: #808080;">Prediction: </span>
                    <div class="home">
                        <div class="team-name">
                            <img src="http://164.177.157.12/img/teams/13.png" class="team-emblem">
                            <a href="/Teams/13" class="team-link">Arsenal</a>
                        </div>
                        <span class="predicted-score">2</span>
                        <div class="clear"></div>
                    </div>
                    <div class="away">
                        <span class="predicted-score">1</span>
                        <div class="team-name">
                            <a href="/Teams/26" class="team-link">Liverpool</a>
                            <img src="http://164.177.157.12/img/teams/26.png" class="team-emblem">
                        </div>
                        <div class="clear"></div>
                    </div>
                </div>

我想从页面中的特定标记中提取准确的文本。我不能使用 find_all() 或 find(),因为该页面具有这种复杂的结构。所以我将 select() 函数与 CSS select 或:

一起使用
 soup.select("#preview-prediction > .home > .team-name > .team-link")

最后一个 class team-link 包含我需要提取的文本。如何执行此任务?

这将创建一个包含所选标签的所有内容的列表。

>>> [i.text for i in soup.select('#preview-prediction > .home > .team-name > .team-link')]
['Arsenal']

这将打印第一个选定标签的内容。

>>> soup.select('#preview-prediction > .home > .team-name > .team-link')[0].text
'Arsenal'