使用beauthoulsoup,在使用search for text函数时是否可以移动到父标记?

2024-04-28 08:43:50 发布

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

当只有文本是公共标识符时,是否可以从DOM中的当前位置上下移动?在

<div>changing text</div>
    <div>fixed text</div>

当搜索fixed text并向上移动到父div时,如何获得文本changing text?在

我尝试了:

^{pr2}$

Tags: text文本div标识符domfixedpr2changing
2条回答

此程序可以执行您想要的操作:

from bs4 import BeautifulSoup
import re

html = '<body><div>changing text</div><div>fixed text</div><body>'

soup = BeautifulSoup(html)

x = soup.body.findAll(text=re.compile('fixed text'))[0].parent.previous_sibling

assert x.text == 'changing text'

出现错误是由于调用ResultSet中的parent一个结果列表。如果需要多个结果,请尝试:

x = soup.body.find_all(text=re.compile('fixed text'))
for i in x:
    previous_div = i.previous_sibling

如果不想查找多个结果,只需将“查找全部”更改为“查找”:

^{pr2}$

请注意,我将parent替换为previous-sibling,因为div在同一级别

相关问题 更多 >