You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BeautifulSoup无法提取Product Description后文本的解决方法

Product Description文本爬取问题解答

核心结论:不需要提前提取目标文本前的所有p标签

你定位到的class="product_page"的article容器内,"Product Description"标题被包裹在id="product_description"的div标签中,对应的描述正文就是这个div的下一个相邻p标签,直接通过相邻节点定位即可拿到目标内容,遍历前置p标签属于冗余操作,还容易取到无关内容。

可直接复用的代码

基于你已编写的代码,补充以下逻辑即可完成提取:

import requests
from bs4 import BeautifulSoup

book_url = 'http://books.toscrape.com/catalogue/1000-places-to-see-before-you-die_1/index.html'
response = requests.get(book_url)
soup = BeautifulSoup(response.content, 'lxml')
book_body = soup.find('article', class_='product_page')

# 定位Product Description标题节点
desc_title = book_body.find('div', id='product_description')
# 提取标题后紧邻的描述正文
product_desc = desc_title.find_next_sibling('p').get_text(strip=True)

写法优势

  • 定位精准:不会误取描述板块前的商品宣传语、库存提示等无关p标签内容
  • 效率更高:不需要遍历无关DOM节点
  • 鲁棒性更强:只要描述板块「标题+相邻正文」的结构不变,页面其他位置的元素增减不会影响提取结果

异常兼容(可选)

针对部分无商品描述的书籍页面,可以加判空逻辑避免运行报错:

desc_title = book_body.find('div', id='product_description')
product_desc = '暂无商品描述'
if desc_title:
    desc_content_tag = desc_title.find_next_sibling('p')
    if desc_content_tag:
        product_desc = desc_content_tag.get_text(strip=True)

内容的提问来源于stack exchange,提问作者kruffer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 15:51:18