在BeautifulSoup中,方法find_next()可以在XML文档中查找指定标签的下一个兄弟节点。但是,有时我们仅需要查找一个具有特定属性的兄弟节点,如何实现呢?
我们可以使用BeautifulSoup的kwarg参数来限制属性搜索。使用过滤器并将它们传递到attrs参数中可以完成这项任务。
以下是示例代码,搜索具有class为"my_class"的div节点的下一个兄弟节点:
from bs4 import BeautifulSoup
xml = """
soup = BeautifulSoup(xml, "lxml")
div = soup.find("div", {"class": "my_class"}) next_div = div.find_next("div", attrs={"class": "my_class"})
print(next_div.text)
输出: third_div
这个例子指出,我们先使用find()方法找到class为"my_class"的div节点,然后使用find_next()方法在这个节点之后查找下一个具有相同属性的div节点。
其中关键词参数attrs值是一个字典。如果要限制多个属性,则可以指定多个键值对。例如:attrs={"class": "my_class", "id": "my_id"}。