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

如何用Python Requests+BeautifulSoup获取滚动加载页面的全部产品名?

解决滚动加载页面的全量产品爬取问题

你的代码只能拿到初始加载的12条产品,是因为该页面采用滚动加载机制——初始仅渲染部分内容,向下滚动时通过AJAX请求获取更多产品数据并追加到页面。下面提供两种可行的解决方案:

方法一:直接调用后端AJAX接口(推荐)

滚动加载时,浏览器会向后台发送API请求获取分页数据,我们可以直接抓这个接口批量请求,效率远高于模拟浏览器。

代码示例:

import requests

# 基础API接口,通过page参数控制分页
base_api = "https://www.outre.com/wp-json/wc/store/products"
request_params = {
    "category": "wigs",
    "per_page": 12,
    "orderby": "date",
    "order": "desc",
    "page": 1
}

all_product_names = []

while True:
    res = requests.get(base_api, params=request_params)
    res.raise_for_status()
    current_page_products = res.json()
    
    # 没有更多产品时终止循环
    if not current_page_products:
        break
    
    # 提取当前页的产品名称
    for product in current_page_products:
        all_product_names.append(product["name"])
    
    # 页码自增,请求下一页
    request_params["page"] += 1

# 输出所有产品名称
for name in all_product_names:
    print(name)

print(f"\n共获取到 {len(all_product_names)} 条产品信息")

方法二:用Selenium模拟浏览器滚动加载

如果不想分析接口,或者接口有反爬限制,可以用Selenium模拟真实用户滚动页面,等所有内容加载完成后再解析。

代码示例:

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

# 初始化Chrome浏览器(需提前安装ChromeDriver并配置环境变量)
driver = webdriver.Chrome()
driver.get("https://www.outre.com/product-category/wigs/")

# 模拟滚动到底部,直到没有新内容加载
last_page_height = driver.execute_script("return document.body.scrollHeight")

while True:
    # 滚动到当前页面底部
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    # 等待页面加载新内容,可根据实际加载速度调整等待时间
    time.sleep(2)
    
    # 获取新的页面高度
    new_page_height = driver.execute_script("return document.body.scrollHeight")
    
    # 高度不再变化,说明所有内容已加载完成
    if new_page_height == last_page_height:
        break
    
    last_page_height = new_page_height

# 提取所有产品名称
product_elements = driver.find_elements(By.CSS_SELECTOR, "div.title-wrapper p a")
all_product_names = [elem.text for elem in product_elements]

# 输出结果
for name in all_product_names:
    print(name)

print(f"\n共获取到 {len(all_product_names)} 条产品信息")

# 关闭浏览器
driver.quit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:54:28