python-3.x - 使用beautifulsoup在我们有div标签后跟听者标签的地方提取内容
问题描述
我试图在它们在一起时提取 div 标签和标题标签。前任:
<h3>header</h3>
<div>some text here
<ul>
<li>list</li>
<li>list</li>
<li>list</li>
</ul>
</div>
我尝试了以下链接中提供的解决方案。这里是 div 标签内的标题标签......但我的要求是标题标签后的 div 标签。
使用 beautifulSoup、Python 在 h3 和 div 标签中抓取文本
我也尝试过这样的事情但没有奏效
soup = bs4.BeautifulSoup(page, 'lxml')
found = soup..find_all({"h3", "div"})
我需要来自 H3 标记的内容和 div 标记中的所有内容,只要这两个组合存在。
解决方案
您可以使用 CSS 选择器-这h3:has(+div)
将选择所有紧随其后的:<h3>
div
data = '''<h3>header</h3>
<div>some text here
<ul>
<li>list</li>
<li>list</li>
<li>list</li>
</ul>
</div>
<h3>This header is not selected</h3>
<p>Beacause this is P tag, not DIV</p>
'''
from bs4 import BeautifulSoup
soup = BeautifulSoup(data, 'html.parser')
for h3 in soup.select('h3:has(+div)'):
print('Header:')
print(h3.text)
print('Next <div>:')
print(h3.find_next_sibling('div').get_text(separator=",", strip=True))
印刷:
Header:
header
Next <div>:
some text here,list,list,list
进一步阅读:
推荐阅读
- architecture - 根据我的情况推荐最佳方法(多租户与使用 abp 的单租户)
- java - 如何使用 Snake YAML Java 加载多个 yaml 文件?
- ios - 文本字段在 IOS carplay 中没有接受任何输入
- sql - 我只需要找到每个城市收入最高的员工
- html - css动画空白:nowrap;
- sql - 从 XML 列中获取所有值
- javascript - 如何将 MySQL 查询数据传递给 JavaScript 变量?
- c# - 声明静态和非静态变量
- java - 结果集 rs.next() 的 rs 变量如何为真,即使它们在第二个表 b 中没有记录
- c++ - c++ getSize() 方法返回奇怪的值