使用beautifulSoup,尝试获取其中包含字符串的所有表行

时间:2010-08-09 01:08:53

标签: python beautifulsoup

我需要在页面上获取包含特定字符串“abc123123”的所有表格行。

字符串在TD内部,但如果内部任何地方都包含'abc123123',我需要整个TR。

我试过了:

userrows = s.findAll('tr', contents = re.compile('abc123123'))

我不确定内容是否是写属性。

我的HTML看起来像:

<tr>
   <td>
   </td>
   <td><table>.... abc123123 </table><tr>
   ..
</tr>
<tr>
..
</tr>
..
..

1 个答案:

答案 0 :(得分:4)

不,超出指定值(name, attrs, recursive, text, limit)的额外关键字参数都会引用您正在搜索的标记的属性

您无法同时搜索name text(如果您指定text,则BS会忽略name),因此您需要单独的电话,例如:

allrows = s.findAll('tr')
userrows = [t for t in allrows if t.findAll(text=re.compile('abc123123'))]

这里我使用的是列表推导,因为我假设你需要一个相关标签对象的列表,正如findAll本身给你的那样。