我有这样的html结构:
<table><tr><p>Hello1</p></tr><tr><p>Shirt</p></tr></table>
<table><tr><p>Hello2</p></tr><tr><p>Jeans</p></tr><tr><p>Jacket</p></tr></table>
<table><tr><p>Hello3</p></tr><tr><p>Trouser</p></tr></table>
我要获取除每个表中第一个tr
标记之外的所有表中的所有tr
个标记。
输出应该是:
Shirt
Jeans
Jacket
Trouser
我目前的代码是:
soup = BeautifulSoup(data)
n = soup.findAll('table')
for tr in n:
t = tr.findAll('tr')[1].findAll('span')
for p in t:
print(p.text)
答案 0 :(得分:2)
上面代码的一个问题是,您只获得带有tr
索引的第二个[1]
。相反,你想要使用的是拼接[1:]
,它在第一个之后得到所有东西。另外,要获取文本,请使用find(text=True)
而不是获取范围。请参阅下面的解决方案:
import BeautifulSoup
n = BeautifulSoup.BeautifulSoup(data)
for table in n.findAll('table'):
for tr in table.findAll('tr')[1:]:
print tr.find(text=True)
注意:以上在换行符上打印对象,而您的输出表明它们应该在一个单独的行上。这应该是一个微不足道的变化。