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

Python网页爬取时获取非占位符图片的问题求助

问题:获取网站动态加载的状态图片而非占位符

我需要从网站获取目标状态图片,但该网站会先加载占位符图片(如images/status-some.png),当前代码返回的是占位符,而非实际需要的images/status-none.png。

原代码如下:

import requests
from bs4 import BeautifulSoup


def main():
    r = requests.get("https://www.simcoecountyschoolbus.ca/")
    soup = BeautifulSoup(r.content, "html.parser")

    northdiv= soup.find("div", id="status-icon-north")
    northimages = northdiv.select('img')
    statusNorth = northimages[0].get("src")

    westdiv = soup.find("div", id="status-icon-west")
    print(westdiv)
    statusWest = westdiv.select("img")[0].get("src")

    print(statusWest)

main()

原因分析

requests只能获取服务器返回的初始HTML内容,而该网站的状态图片是通过JavaScript动态替换的——初始HTML里的img标签是占位符,页面加载完成后JS会根据实际状态替换图片的src属性,所以直接用requests+BeautifulSoup拿不到最终的图片地址。

解决方案:使用Selenium执行JavaScript

Selenium可以模拟浏览器加载页面,等待JS执行完成后再获取最终的DOM内容。

步骤1:安装依赖

pip install selenium

同时需要下载对应浏览器的驱动(比如ChromeDriver),确保驱动版本和你的浏览器版本一致,将驱动放在系统PATH中或者在代码里指定路径。

步骤2:修改后的代码

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

def main():
    # 初始化Chrome浏览器(也可以用Firefox等)
    driver = webdriver.Chrome()
    try:
        driver.get("https://www.simcoecountyschoolbus.ca/")
        
        # 等待图片元素加载完成并确保JS已替换src
        wait = WebDriverWait(driver, 10)
        
        # 获取North区域的图片src
        north_img = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#status-icon-north img")))
        statusNorth = north_img.get_attribute("src")
        
        # 获取West区域的图片src
        west_img = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#status-icon-west img")))
        statusWest = west_img.get_attribute("src")
        
        print("North status image:", statusNorth)
        print("West status image:", statusWest)
    finally:
        # 关闭浏览器
        driver.quit()

main()

代码说明

  • WebDriverWait设置10秒超时,确保页面和JS执行完成
  • presence_of_element_located等待目标图片元素出现
  • get_attribute("src")获取JS替换后的最终图片地址

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:10:32