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

使用Python Selenium无法获取全部src-0至src-59对应链接如何修复代码

问题解决方案

1. 核心问题说明

  • 目标站点商品采用懒加载机制,未滚动到可视区域的商品不会被渲染到DOM树中,因此直接调用查找方法只能获取首屏商品
  • 原XPath未筛选带有src-0到src-59属性的商品元素,无法匹配你需要的范围

2. 修改后完整代码

!pip install selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import pandas as pd

# 初始化浏览器
browser = webdriver.Chrome(executable_path='./chromedriver.exe')
browser.implicitly_wait(5)
browser.get("https://tw.mall.yahoo.com/store/%E5%B1%88%E8%87%A3%E6%B0%8FWatsons:watsons")

# 滚动页面加载全部商品
last_height = browser.execute_script("return document.body.scrollHeight")
while True:
    # 滚动到页面底部
    browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    # 等待页面加载
    time.sleep(2)
    # 计算新的页面高度,判断是否已经滚动到底
    new_height = browser.execute_script("return document.body.scrollHeight")
    if new_height == last_height:
        break
    last_height = new_height

# 匹配商品链接,若src-xx是元素类名/自定义属性,可直接调整XPath筛选条件
# 例如类名带src-的XPath写法:"//ul[@class='gridList']/li[contains(@class, 'src-')]/a"
linkPath = "//ul[@class='gridList']/li/a"
product_links = browser.find_elements(By.XPATH, linkPath)

# 提取前60条对应src-0到src-59的链接
result_links = []
for idx, link in enumerate(product_links[:60]):
    href = link.get_attribute('href')
    result_links.append({
        '索引': f'src-{idx}',
        '商品链接': href
    })

# 输出结果
for item in result_links:
    print(item)

# 如需保存为CSV可取消下面注释
# pd.DataFrame(result_links).to_csv('屈臣氏商品链接.csv', index=False, encoding='utf-8-sig')

browser.quit()

3. 注意事项

  • 如果页面上的src-xx是元素的自定义属性,可直接调整XPath的筛选条件精准匹配,不用手动截取前60条,比如属性为data-src-id时,XPath可写为//ul[@class='gridList']/li[number(substring-after(@data-src-id, 'src-')) <=59]/a
  • 滚动等待时间可根据网络情况调整,网络较差时可把time.sleep(2)改为time.sleep(3)
  • 若使用Selenium 4.6及以上版本,不需要手动下载chromedriver,删掉executable_path参数即可,Selenium会自动匹配对应版本的驱动

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:15:07