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

时间:2015-04-04 10:08:44

标签: python beautifulsoup

我正在学习使用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(),因为页面具有这种复杂的结构。所以我正在使用带有CSS选择器的select()函数:

 soup.select("#preview-prediction > .home > .team-name > .team-link")

最后一个类团队链接包含我需要提取的文本。如何执行此任务?

1 个答案:

答案 0 :(得分:1)

这将创建所选标签的所有内容列表。

>>> [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'