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

如何使用Python提取动态HTML页面中的全部目标数据

Python提取HTML数据不全的解决方案

问题根因

  • 目标站点商品列表采用懒加载机制,初始页面请求仅返回第一屏约20条商品,剩余商品需要下滑页面触发接口请求才会加载,requests库只能获取初始静态页面内容,因此只能拿到部分数据
  • 现有代码存在语法错误,select_one方法传入参数不符合规范,会导致价格字段提取异常

修复方案

这里推荐直接抓后端商品接口获取全量数据,比模拟浏览器效率更高,完整代码如下:

import requests
import pandas as pd

headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36',
    'Referer': 'https://m.pcone.com.tw/store/0670386?ref=d_item_store'
}

output = []
page = 1
# 循环翻页直到无商品返回
while True:
    # 店铺商品接口,替换page参数翻页
    api_url = f"https://m.pcone.com.tw/store/api/v1/store/getStoreProducts?storeId=0670386&page={page}&sort=default"
    resp = requests.get(api_url, headers=headers).json()
    product_list = resp['data']['products']
    if not product_list:
        break
    for product in product_list:
        productname = product['name']
        productprice = product['price']
        ordercount = product.get('order_count_format', '').replace('已售出', '') if product.get('order_count_format') else None
        output.append([productname, productprice, ordercount])
    page +=1

df = pd.DataFrame(output, columns=['商品名稱', '價格', '購買人數'])
df.to_excel('松果-瑞昌.xlsx', index=False)

如果你一定要用HTML解析的方案,需要用selenium库模拟浏览器滚动加载全量内容后再用BeautifulSoup解析,修改要点如下:

  • 安装selenium和对应浏览器驱动
  • 启动浏览器后打开目标页面,循环执行下滑JS代码,等待页面加载完成,直到没有新的商品加载后再获取页面源码解析

原有代码错误修复

如果你只需要修复现有代码的提取错误,把价格提取的代码改成以下任意一种即可:

# 方案1:用find方法
productprice= product.find("span",class_='symbol-price').string
# 方案2:正确使用select_one
productprice= product.select_one("span.symbol-price").string

内容的提问来源于stack exchange,提问作者鄭鼎彥

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:06:02