如何使用BeautifulSoup搜索仅包含我要搜索的属性的标签?
例如,我要查找所有<td valign="top">标签。
<td valign="top">
如下代码: raw_card_data = soup.fetch('td', {'valign':re.compile('top')})
raw_card_data = soup.fetch('td', {'valign':re.compile('top')})
获取我想要的所有数据,还获取<td>具有该属性的所有标签valign:top
<td>
valign:top
我也试过了: raw_card_data = soup.findAll(re.compile('<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">)返回
<td width="580" valign="top">
如BeautifulSoup文档中所述
您可以使用:
soup = BeautifulSoup(html) results = soup.findAll("td", {"valign" : "top"})
编辑:
要返回仅具有valign =“ top”属性的标签,可以检查tagattrs属性的长度:
attrs
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>