我试图解析位于此页面http://www.bluenote.net/newyork/schedule/index.shtml的表格。我正在尝试获取当前正在播放的人的开始时间和乐队名称。我注意到表中包含p元素的第一个td是我正在寻找的。知道怎么回事吗?我尝试使用
soup.findAll("p")
但我试图选择整个" td"包含那个" p"元件。
答案 0 :(得分:2)
您可以使用生成器:
first_td = next(td for td in soup.find_all('td') if td.p)
# ^ generator ^
find_all
会产生所有<td>
个标签。然后,我们按td.p
过滤代码。这将返回p
标记(假设有一个)。否则它将返回None
。由于None
的真实性为False
,而对于标记对象,True
,因此生成器将使用{枚举所有<td>
标记{1}}标记。
我们致电<p>
以获取这些元素中的第一个。如果不存在这样的元素,它将引发next(..)
异常。
如果你想要所有这些标签,你可以使用列表理解:
StopIteration