python - 如何使用 Beautiful Soup 在一个查询中获取多个类

标签 python html-parsing beautifulsoup

我想在下面的 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" }):

最佳答案

您可以使用 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'

    /li>
  • $ - 字符串结束

关于python - 如何使用 Beautiful Soup 在一个查询中获取多个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13572676/

相关文章:

python - 如何使用 python imaplib.IMAP4.search() 搜索特定的电子邮件

python - 如何在 MySQL 语句中使用 .format() 字符串?

python - 获取由标签分隔的文本/BS4

python - 为什么我在这个 python 代码中得到 "AttributeError: ' str' object has no attribute 'write' “

python - 从多个 URL 中提取原始文本

python - 如何为 "IN clause"传递可变参数

python - 如何在matplotlib barh图中删除空的 "padding"?

java - 类似于 BeautifulSoup 和 "HTML Agility Pack"的库,但用于 C 或 Java?

java - 如何查看计算机和网络服务器之间的GET,POST等信息

python - BeautifulSoup 未正确获取所有 HTML