如果标签存在,则获取标签的属性;否则没有

时间:2016-07-18 19:23:24

标签: python beautifulsoup

我在BeautifulSoup 4中有一个td标记。其中可能有一个a标记:

row.find_all('td')[2].find('a')

如果有,我想检索a代码的href属性。否则,我想None

这就是我所想到的:

getattr(row.find_all('td')[2].find('a'), 'attrs', {}).get('href')

这是一种有效的方法吗?

示例行:

<tr><td><a href="http://google.com">405</a></td>
\n<td><font face="Arial" size="-1">12-Jul</font></td>\n<td><font face="Arial" size="-1">There could be an a-tag here.</fo
nt></td>\n<td><font face="Arial" size="-1">On Motion</font></td>\n<td align="CENTER"><fo
nt face="Arial" size="-1">F</font></td>\n<td><font face="Arial" size="-1">\xa0</font></td></tr> 

1 个答案:

答案 0 :(得分:1)

您可以选择第二个tr和内部任何锚点,然后使用if:

进行检查
a = soup.select_one("tr:nth-of-type(2) a[href]")


if a:
    print(a["href"])

如果没有锚,则a将为None,如果有,则可以提取href。