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

页面源码无目标HTML标签,如何抓取Danfoss产品页PDF及下载链接?

问题与解决方案

问题详情

我尝试从Danfoss产品页面的Visuals表格中抓取PDF链接及下载链接,但目标HTML标签未出现在页面初始源码中,导致抓取失败。使用的代码如下:

table=soup.find('table',attrs={'class':'table visual-table sort-table dynamic-table'})
if(table):
    rows = table.find_all('li')
    for row in rows:
        a=row.find_all('a',href=True)
        for i in a:
            print('img: ',i['href'])

原因分析

页面的Visuals表格是动态加载的(通过JavaScript/AJAX异步渲染),BeautifulSoup只能解析页面初始加载的静态HTML,无法获取JS动态生成的元素,因此找不到目标标签。

可行解决方案

方案1:抓取AJAX接口数据

  1. 打开浏览器开发者工具(F12),切换到「Network」标签,过滤「XHR/Fetch」请求;
  2. 刷新页面,找到返回Visuals表格数据的JSON接口;
  3. 直接请求该接口,解析返回的JSON数据提取链接,无需解析HTML,效率更高。

方案2:使用无头浏览器渲染页面

用Selenium/Playwright等工具模拟浏览器加载页面,等待动态元素渲染完成后再抓取。以下是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://store.danfoss.com//en/Climate-Solutions-for-cooling/Sensors-and-transmitters/Sensors/Temperature-sensors/Temperature-sensor%2C-ETN%2C-1-50-m/p/077F8726")

# 等待Visuals表格加载完成(最多等待10秒)
wait = WebDriverWait(driver, 10)
table = wait.until(EC.presence_of_element_located((By.CLASS_NAME, "visual-table")))

# 抓取表格内的PDF及下载链接
links = table.find_elements(By.TAG_NAME, "a")
for link in links:
    href = link.get_attribute("href")
    if href and (".pdf" in href or "download" in href.lower()):
        print("目标链接:", href)

# 关闭浏览器
driver.quit()

内容的提问来源于stack exchange,提问作者Bar oo.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 02:05:18