2017-10-05 134 views
0

我有这行代码:如何使用BeautifulSoup3选择位于div标签内的span标签中的文本?

scoreline_div = soup.find("div", { "class" : "score-line" }) 

它选择页面上的div标签页,这是它的样子:

<div class="score-line"><span class="home-team team team-900">South Africa</span><span class="score">27 - 27</span><span class="away-team team team-100">Australia</span></div> 

如何选择第一个文本和第三span(南非,澳大利亚)?此外,span标签的类别会发生变化,因此我可以在不搜索class的情况下执行此操作,而不是选择第一个跨度的第一个&?

+0

为什么不通过访问这些跨度他们的位置? – RomanPerekhrest

+0

怎么样?你的意思是输入'scoreline_div.span [0]'?它不起作用,给我一个错误 –

+0

容易与'n型的'选择器 – RomanPerekhrest

回答

1

您可以使用find_all()方法,并得到跨越的列表:

scoreline_div = soup.find("div", { "class" : "score-line" }) 
spans = scoreline_div.find_all('span') 
# spans[0].text should return 'South Africa' 
# spans[2].text should return 'Australia' 
2

一号线的解决方案:

s1,s2 = soup.find("div", { "class" : "score-line" }).select('span:nth-of-type(1),span:nth-of-type(3)') 
print(s1.text, s2.text) 

输出:

South Africa Australia