python - 通过 text beautifulsoup 从第二个 div 中提取文本
问题描述
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())
推荐阅读
- google-sheets-api - 如何将日期转换为 Google 表格中的文本
- java - Java - 为什么字符串拆分为空字符串给我一个非空数组?
- r - R循环从多个数据框中选择特定列
- angular - 如何处理 Angular 中的响应?
- python - Django 何时加载应用程序?
- javascript - 检查 2 个输入和启用按钮的变化
- r - mlflow R 安装 MLFLOW_PYTHON_BIN
- r - 在数据框中“带来价值”,如何?
- asp.net - ./watch 主要是在编译 JS 库文件,但它总是在缓存一个文件
- javascript - 动态js捆绑同步api调用