A 有以下 html 代码。需要根据“text3”值提取text4
<div class="main">
<ul>
<li>
<div class="1"> text1 </div>
<div class="2"> text2 </div>
</li>
<li>
<div class="1"> text3</div>
<div class="2"> text4</div>
</li>
</ul></div>
我使用了这段代码,但它不起作用。我是否遗漏了什么或者有更简单的解决方案?
a.find_next_sibling('div')[0]
for a in soup.find_all('div', text='text3')
最佳答案
使用 css 选择器识别标签并使用 find_next('div')
html=''' <div class="main">
<ul>
<li>
<div class="1"> text1 </div>
<div class="2"> text2 </div>
</li>
<li>
<div class="1"> text3</div>
<div class="2"> text4</div>
</li>
</ul></div>'''
soup=BeautifulSoup(html,'html.parser')
print(soup.select_one('.main div:contains(text3)').find_next('div').text.strip())
<小时/>
或者您可以使用正则表达式 re。
from bs4 import BeautifulSoup
import re
html=''' <div class="main">
<ul>
<li>
<div class="1"> text1 </div>
<div class="2"> text2 </div>
</li>
<li>
<div class="1"> text3</div>
<div class="2"> text4</div>
</li>
</ul></div>'''
soup=BeautifulSoup(html,'html.parser')
print(soup.find('div', class_='main').find('div',text=re.compile("text3")).find_next('div').text.strip())
关于python - 通过文本 beautifulsoup 从第二个 div 中提取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59469233/