findAll函数BeautifulSoup

时间:2013-06-16 19:02:44

标签: python beautifulsoup

我一直在尝试解析存储在<td>标记之间的文本元素,例如:

<tr>
<td>Trading Hours</td>
<td><b>Monday</b> <br />
London - 23:00 Sunday - 23:00 Monday<br />
New York - 18:00 Sunday - 18:00 Monday<br />
Chicago - 17:00 Sunday - 17:00 Monday<br />
<br />
<b>Tuesday-Friday</b> <br />
London - 01:00 - 23:00<br />
New York - 20:00 - 18:00<br />
Chicago - 19:00 - 17:00<br />
</td>
</tr>

在这个简单的示例中,只有2个<td>标记,并假设变量tr存储整个html代码块。我提取文本的逻辑如下(没有任何<tr><br>标记):

for td in tr.findAll('td'):
    row.append((td.find('td', text = True)).strip().strip('\n'))

问题:我的for循环识别第一个<td>标记,但不识别第二个{{1}}标记。我怎样才能改善这个?

1 个答案:

答案 0 :(得分:1)

text=True告诉BeautifulSoup查找带有文本的元素。如果您想获取文字,则需要使用.get_text()

td.find('td', text=True).get_text(strip=True)