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

Webscraping列表返回空求助:雷诺经销商页面爬取问题排查

解决爬取Renault经销商页面返回空列表的问题

我帮你分析下问题所在,以及怎么修改代码:

问题根源

你遇到的核心问题是页面内容是通过JavaScript动态渲染的(从元素的ng-binding class能看出是Angular框架)。你用requests.get()获取的是服务器返回的静态HTML,这时候经销商列表的元素还没被JS生成,所以BeautifulSoup自然找不到对应的节点。另外你同时混用了Selenium和requests,这其实没必要——既然已经用ChromeDriver加载页面,直接用它获取渲染后的页面内容就好。

修复方案

下面是调整后的代码,我标注了关键改进点:

import time
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

url = "https://www.renault-retail-group.fr/concessions-renault.html"
chrome_path = r"C:\Users\xxx\Desktop\chromedriver_win32 (1)\chromedriver.exe"
driver = webdriver.Chrome(chrome_path)
driver.maximize_window()

try:
    driver.get(url)
    # 等待经销商列表元素加载完成,避免获取空内容
    # 用更稳定的父容器选择器,代替依赖ng-binding的动态class
    WebDriverWait(driver, 10).until(
        EC.presence_of_all_elements_located((By.CLASS_NAME, "audColResultatConcessionAdresse"))
    )
    # 获取渲染后的页面源码
    page_source = driver.page_source
    
    # 用BeautifulSoup解析渲染后的源码
    from bs4 import BeautifulSoup
    soup = BeautifulSoup(page_source, "html.parser")
    g_data = soup.find_all("div", class_="audColResultatConcessionAdresse")
    
    dict_name_r = []
    for item in g_data:
        # 直接找到h6元素,不需要用contents[1](这个索引很容易因为DOM结构变化失效)
        name_element = item.find("h6", class_="audColResultatConcessionNom")
        if name_element:  # 做个空值判断,避免报错
            dict_name_r.append(name_element.get_text(strip=True))
    
    print(dict_name_r)
finally:
    driver.quit()  # 确保浏览器关闭,避免残留进程

关键改进说明

  • 去掉了requests依赖:直接用Selenium获取页面渲染后的源码,这样才能拿到动态生成的经销商列表
  • 增加显式等待:用WebDriverWait等待元素加载完成,代替固定的time.sleep,更可靠也更高效
  • 优化元素定位逻辑:
    • 避免使用contents[1]这种依赖DOM结构顺序的写法,改用find()直接定位目标元素
    • 增加空值判断,防止因为个别元素结构异常导致代码报错
  • 添加finally块:确保不管代码是否报错,浏览器都会被关闭

额外提示

如果后续遇到类似动态渲染页面的爬取需求,记住:

  • 静态请求(requests)只能拿到服务器初始返回的HTML,无法获取JS加载的内容
  • 优先用Selenium/Puppeteer这类工具模拟浏览器渲染,或者尝试抓包找到后台API接口(如果有的话),后者效率会更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:06:43