使用beautifulsoup4基于兄弟姐妹在两个相同标签内容之间做出区分

时间:2018-05-02 18:20:01

标签: python python-3.x beautifulsoup

我目前正在尝试使用beautifulsoup4从网页中的html元素中获取文本。我的问题是在页面的其他地方有一个完全相同的命名元素。它就是这样的。

<div class="class">
  <span class="1"></span>
  <span class="value">text I want</span>
</div>
<div class="class">
  <span class="2"></span>
  <span class="value">text I DON'T want</span>
</div>

我正在尝试返回“我想要的文字”。现在,这里的好处是,兄弟姐妹之间确实存在阶级差异 - 第一个兄弟姐妹有阶级“1”,而第二个兄弟阶段有阶级“2” - 但我不知道如何实际承受在代码中的区别。 bs4中有经验的人可以帮我解决这个问题吗?

请注意,我正在使用CSS选择器来获取我想要的元素,所以如果我们可以使用它来获取包含文本的元素,那就更好了。

我如何找到元素的例子

soup.select("span[id='identifier']")

1 个答案:

答案 0 :(得分:1)

使用XPATH:

 soup.find('span[@class="1"]').next_sibling

使用CSS:

soup.select("span.1 ~ .value")

我相信这两个都应该奏效。否则,我建议您查看文档here