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

使用Python抓取动态生成网站HTML页面遇阻求助

解决LVMH职位页面动态内容抓取问题

问题分析

你遇到的核心问题是页面职位内容通过异步AJAX请求加载,原有代码要么未等待内容完全渲染,要么没直接抓取数据来源的API接口,导致无法获取目标信息。

方案一:改进Selenium代码(等待元素加载)

之前的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
from bs4 import BeautifulSoup

url = "https://www.lvmh.com/en/join-us/our-job-offers?PRD-en-us-timestamp-desc%5BrefinementList%5D%5Bmaison%5D%5B0%5D=Kendo"

driver = webdriver.Safari()
driver.get(url)

try:
    # 最长等待10秒,直到目标元素出现
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, "ais-Highlight-nonHighlighted"))
    )
    # 获取完整渲染后的页面源码
    page_source = driver.page_source
    # 用BeautifulSoup解析
    soup = BeautifulSoup(page_source, "html.parser")
    job_names = soup.find_all("span", class_="ais-Highlight-nonHighlighted")
    print("抓取到的职位名称:")
    for name in job_names:
        print(name.get_text(strip=True))
finally:
    driver.quit()

方案二:直接抓取API接口(推荐)

动态页面的职位数据通常来自后台API,直接请求API比渲染页面更高效、可靠。通过浏览器开发者工具的Network面板(XHR分类)可找到数据接口:

import requests

# API接口地址
api_url = "https://jobs.lvmh.com/api/v2/search"

# 请求参数,对应页面的Kendo品牌筛选条件
params = {
    "query": "",
    "page": "0",
    "hitsPerPage": "10",
    "sort": "PRD-en-us-timestamp-desc",
    "refinementList[maison][]": "Kendo"
}

# 模拟浏览器请求头,避免被拦截
headers = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"
}

response = requests.get(api_url, params=params, headers=headers)
data = response.json()

# 提取职位信息
print("API返回的职位数据:")
for job in data["hits"]:
    print(f"职位名称:{job['title']}")
    print(f"工作地点:{job['location']}")
    print(f"职位链接:https://www.lvmh.com{job['url']}")
    print("---")

关键说明

  1. 显式等待优势:相比固定时间等待(time.sleep()),显式等待会在元素出现后立即执行,更高效且避免网络波动导致的等待不足。
  2. API抓取优势:直接获取结构化JSON数据,无需解析HTML,减少出错概率和资源消耗;如需分页数据,只需修改page参数即可。
  3. 反爬注意:部分网站会校验User-Agent等请求头,建议使用真实浏览器的UA字符串;若后续出现访问限制,可能需要处理Cookie或会话保持。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 22:13:15