如何使用BeautifulSoup在包含<p>元素的表中找到第一个<td>?

2024-10-03 23:21:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图解析位于这个页面http://www.bluenote.net/newyork/schedule/index.shtml的表。我想知道今天谁在电流上演奏的开始时间和乐队名称。我注意到表中包含p元素的第一个td就是我要查找的。你知道我该怎么做吗?我试着用

soup.findAll("p") 

但我试图选择包含“p”元素的整个“td”。在


Tags: 名称http元素indexnetwww时间页面
1条回答
网友
1楼 · 发布于 2024-10-03 23:21:37

您可以使用生成器:

first_td = next(td for td in soup.find_all('td') if td.p)
#               ^           generator                  ^

find_all将生成所有<td>标记。然后我们按td.p过滤标签。这将返回p标记(假设有一个)。否则它将返回None。由于None真实性False,而对于tag对象它是True,因此生成器将用一个<p>标记来枚举所有的<td>标记。在

我们调用next(..)来获得这些元素中的第一个。如果不存在这样的元素,它将引发StopIteration异常。在

如果您想要所有这些标记,可以使用列表理解:

^{pr2}$

相关问题 更多 >