2

我想在下面的 html 中找到带有 class="s" 或 class="sb" 的 td

<tr bgcolor="#e5e5f3"><td class="sb" width="200" align="left">test1</td><td class="sb" align="right">5,774.0</td><td class="sb" align="right">4,481.0</td><td class="sb" align="right">5,444.0</td><td class="sb" align="right">6,615.0</td><td class="sb" align="right">6,858.0</td></tr>
<tr bgcolor="#f0f0E7"><td class="s" width="200" align="left">test2</td><td class="s" align="right">5,774.0</td><td class="s" align="right">4,481.0</td><td class="s" align="right">5,444.0</td><td class="s" align="right">6,615.0</td><td class="s" align="right">6,858.0</td></tr>

我现在正在使用以下代码。但只能获得等于“S”的类。是否可以在一个 Beautiful Soup find_all 查询中同时获得“s”和“sb”?

 soup = BeautifulSoup(urllib2.urlopen(url).read(),"lxml");
 for item in soup.find_all("td", { "class" : "s" }):
4

1 回答 1

9

您可以使用 beautiful soup 对正则表达式的支持来做到这一点。

import re
soup = BeautifulSoup(urllib2.urlopen(url).read(),"lxml");
for item in soup.find_all("td", { "class" : re.compile(r"^(s|sb)$") })

此正则表达式匹配:

  • ^- 字符串的开头

  • (s|sb)- 字符串's'或字符串'sb'

  • $- 字符串的结尾

于 2012-11-26T20:39:38.167 回答