如何用Python/BeautifulSoup提取多DIV及指定样式DIV的文本?
解决方案:提取指定DIV的文本并格式化输出
没问题,我来帮你搞定这个文本提取的需求。先看你的HTML结构,每个产品信息都包裹在<p>标签里,里面分别对应一个Text_Title类的div和一个行内块级的div,我们可以针对这个固定结构来提取内容。下面分两种常用场景给出实现方法:
方法1:前端原生JavaScript处理
如果是在浏览器环境中直接处理这段HTML,可以用原生JS快速实现:
// 定位到目标section下的所有产品p标签 const productItems = document.querySelectorAll('#content4 p'); const output = []; productItems.forEach(item => { // 提取标题文本 const productTitle = item.querySelector('.Text_Title').textContent.trim(); // 提取对应描述文本 const productDesc = item.querySelector('div[style="display: inline-block;"]').textContent.trim(); // 按要求格式拼接 output.push(`${productTitle} - ${productDesc}`); }); // 输出结果(可以按需改成插入页面或其他操作) console.log(output.join('\n'));
运行这段代码后,控制台会输出你想要的格式:
Product 1 - Red Ball Product 2 - Green Ball Product 3 - Yellow Ball
方法2:Python + BeautifulSoup(脚本/后端处理)
如果是需要批量处理或者在后端环境中操作HTML内容,推荐用BeautifulSoup库:
首先先安装依赖(如果还没装的话):
pip install beautifulsoup4
然后编写处理代码:
from bs4 import BeautifulSoup # 你的HTML内容(注意修正了第一个inline-block div的闭合错误,避免DOM结构异常) html = ''' <section id="content4" class="tab-content"> <p> <div class="Text_Title">Product 1</div> <div style="display: inline-block;">Red Ball</div> </p> <p> <div class="Text_Title">Product 2</div> <div style="display: inline-block;">Green Ball</div> </p> <p> <div class="Text_Title">Product 3</div> <div style="display: inline-block;">Yellow Ball</div> </p> ''' # 解析HTML soup = BeautifulSoup(html, 'html.parser') # 获取所有产品p标签 product_paragraphs = soup.select('#content4 p') result = [] for p in product_paragraphs: # 提取标题和描述文本 title = p.find('div', class_='Text_Title').get_text(strip=True) desc = p.find('div', style='display: inline-block;').get_text(strip=True) # 拼接成指定格式 result.append(f"{title} - {desc}") # 打印输出 print('\n'.join(result))
运行脚本后同样会输出符合要求的内容。
小提示:你的原始HTML里第一个<div style="display: inline-block;">Red Ball<div>存在标签闭合错误,应该改成</div>,否则可能会导致DOM结构混乱,影响提取结果,记得修正哦。
内容的提问来源于stack exchange,提问作者azza452
相关产品推荐
相关产品推荐

