Python BeautifulSoup获取没有子元素的元素

2024-05-13 13:43:09 发布

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

HTML示例:

<p class="labels">
  <span>Item1</span>
  <span>Item2</span>
  <time class="time">
    <span>I dont want to get this span</span>
  </time>
</p>

我目前正在使用labels类获取标记内的所有跨距,但我只想直接从labels类下获得2个跨距,我不想从子元素中获取任何span标记。在

现在我很明显是这样做的:

首先,我从一个更大的HTML中获取标签HTML:

^{pr2}$

然后我从中提取span标记。在

spans = labels[0].findAll('span', {"class": None}

在我的例子中,"class": None没有任何改变,因为没有span标记有任何类。在

所以我的问题又来了,我怎么能只得到前2个没有所有子元素的span标记呢?在


Tags: to标记none元素示例labelstimehtml
3条回答

要提取前两个跨度元素,请尝试以下操作

>>>[i.text for i in html.find('p',{"class":"labels"}).findAll('span', {"class": None})[0:2]]
>>>[u'Item1', u'Item2']

如果您想获取类span内的所有span,那么请移除该切片-

^{pr2}$

在beauthoulsoup文档中有一个小句子可以找到recursive = False

所以这个问题的答案是:

spans = labels[0].findAll('span', {"class": None}, recursive=False)
for container in html.findAll(_class="labels"):
    spans = container.findAll('span', {"class": None})
    spans = [span for span in spans if span.parent is container]

或者迭代^{}

^{pr2}$

相关问题 更多 >