一尘不染

如何查找仅具有某些属性的标签-BeautifulSoup

python

如何使用BeautifulSoup搜索仅包含我要搜索的属性的标签?

例如,我要查找所有<td valign="top">标签。

如下代码: raw_card_data = soup.fetch('td', {'valign':re.compile('top')})

获取我想要的所有数据,还获取<td>具有该属性的所有标签valign:top

我也试过了: raw_card_data = soup.findAll(re.compile('<td valign="top">'))
这什么也不返回(可能是由于正则表达式不好)

我想知道在BeautifulSoup中是否有一种方法可以说“查找<td>唯一属性为valign:top”的标签

*例如,如果HTML文档包含以下<td>标记,则为 *UPDATE

<td valign="top">.....</td><br />
<td width="580" valign="top">.......</td><br />
<td>.....</td><br />

我只希望第一个<td>标签(<td width="580" valign="top">)返回


阅读 172

收藏
2020-12-20

共1个答案

一尘不染

BeautifulSoup文档中所述

您可以使用:

soup = BeautifulSoup(html)
results = soup.findAll("td", {"valign" : "top"})

编辑:

要返回仅具有valign =“ top”属性的标签,可以检查tagattrs属性的长度:

from BeautifulSoup import BeautifulSoup

html = '<td valign="top">.....</td>\
        <td width="580" valign="top">.......</td>\
        <td>.....</td>'

soup = BeautifulSoup(html)
results = soup.findAll("td", {"valign" : "top"})

for result in results :
    if len(result.attrs) == 1 :
        print result

返回:

<td valign="top">.....</td>
2020-12-20