python - 通过文本 beautifulsoup 从第二个 div 中提取文本

标签 python html beautifulsoup

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/

相关文章:

python - jinja2.exceptions.TemplateSyntaxError : expected token 'end of print statement' , 得到 'posted'

python - 为 SQLAlchemy 和 jquery 数据表构建排序函数

python - 如何修改此脚本以搜索多个关键字?

jQuery .data 和 .attr 奇怪的行为?

html - 单个文本行的背景宽度

python - 使用 BeautifulSoup 提取 div 的内容

python - 如何阅读网站内容?

python - 用 h2 标签替换 <strong> 标签

javascript - 当我悬停当前选项卡时更改其他选项卡的不透明度

javascript - 使用 beautiful soup 4 抓取天气数据(网站是用 javascript 编码的)