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

使用BeautifulSoup爬取网页时无法获取全部数据及尺寸标签问题

解决CB2产品尺寸爬取问题

问题根源

  1. 动态内容加载:目标页面的产品尺寸是通过JavaScript动态渲染的,直接抓取原始HTML无法获取完整的渲染后内容。
  2. 伪元素限制:::before/::after属于CSS伪元素,这类内容不在原始DOM结构中,是浏览器渲染阶段生成的,BeautifulSoup无法直接解析。

修正后的代码

利用requests_html的render()方法执行页面JS,获取渲染后的完整HTML,再提取尺寸信息:

import requests_html
from bs4 import BeautifulSoup

url = 'https://www.cb2.com/jaxx-round-red-marble-side-table-tall/s265076'

# 初始化会话并渲染页面JS
session = requests_html.HTMLSession()
r = session.get(url)
r.html.render()  # 启动无头浏览器执行JS,生成动态内容

# 解析渲染后的完整HTML
soup = BeautifulSoup(r.html.html, 'html.parser')

# 尝试提取尺寸文本
dimensions = soup.find('p', class_='dimension-text text-md-reg')
if dimensions:
    print("产品尺寸:", dimensions.get_text(strip=True))
else:
    # 备选方案:从尺寸容器中提取文本
    size_container = soup.find('div', class_='product-details__dimensions')
    if size_container:
        print("产品尺寸:", size_container.get_text(strip=True))

核心说明

  • r.html.render():该方法会模拟浏览器加载页面,执行所有JavaScript代码,生成动态渲染后的DOM结构,解决动态内容无法抓取的问题。
  • 伪元素内容处理:页面渲染后,伪元素的内容会被合并到实际DOM的文本节点中,直接提取对应容器的文本即可获取完整信息。
  • 备选选择器:如果指定的p标签未找到,可以尝试定位尺寸模块的父容器,提取其中的所有文本内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 04:52:41