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

使用BeautifulSoup/Selenium提取Farfetch网站销售页总页码遇到问题

问题根源
  • BeautifulSoup无法获取的核心原因是该站点的分页元素为JavaScript动态渲染内容,静态HTTP请求返回的原始HTML中不存在该节点,自然无法解析到目标文本。
  • Selenium定位失败多为两个原因:未等待动态内容加载完成就执行定位操作,或是选择器书写错误、未匹配到对应节点。
解决方案

方案1:修正Selenium定位逻辑

使用显式等待代替强制等待,保证节点加载完成后再执行定位操作,示例代码如下:
首先导入所需依赖:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

核心执行逻辑:

driver = webdriver.Chrome()
driver.get("https://www.farfetch.com/uk/shopping/women/sale/all/items.aspx")

# 可选:滚动到页面底部触发底部元素渲染
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

try:
    # 最多等待10秒,直到目标节点出现
    page_element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH, '//div[@data-testid="page-number"]'))
    )
    page_info = page_element.text
    # 拆分文本提取总页数
    total_pages = int(page_info.split("of")[-1].strip())
    print(total_pages)
finally:
    driver.quit()

方案2:直接调用数据接口(更高效)

不需要启动浏览器渲染页面,可通过抓包获取站点商品列表的后端接口,接口返回数据中会直接包含总商品数、单页商品数,直接计算即可得到总页数,性能远高于Selenium方案。

请求时建议携带正常的User-Agent请求头,控制请求频率避免被站点限制访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:36:02