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

悬停导航栏为何修改HTML?新手用Python BS4爬Bootstrap导航栏求助

问题解答

悬停导航栏导致HTML变化的原因

这是前端通过JavaScript监听鼠标hover事件动态修改DOM结构/属性导致的。你提到的Bootstrap导航栏(比如下拉菜单组件),很多交互逻辑是基于jQuery实现的——当鼠标悬停时,JS会触发事件回调,修改元素的类名(比如添加show类)、插入/更新子元素,从而让检查元素里的HTML内容发生变化。而你用bs4爬取的是页面首次加载的静态源码,自然看不到这些动态生成的内容。

爬取动态导航栏的解决办法

bs4是静态HTML解析工具,无法处理JS动态渲染的内容,你可以用以下两种方案解决:

方案1:用无头浏览器模拟交互(最直接)

使用selenium或playwright这类工具,模拟真实浏览器的渲染过程,包括处理JS事件、实现鼠标悬停,然后获取更新后的DOM内容再解析。

以selenium为例,简单代码示例:

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from bs4 import BeautifulSoup

# 初始化无头Chrome浏览器
options = webdriver.ChromeOptions()
options.add_argument('--headless=new')  # 无头模式,不弹出浏览器窗口
driver = webdriver.Chrome(options=options)

# 访问目标页面
driver.get('你的目标页面URL')

# 定位导航栏需要悬停的元素(替换成实际的CSS选择器/XPath)
nav_item = driver.find_element(By.CSS_SELECTOR, '.nav-link.dropdown-toggle')

# 模拟鼠标悬停动作
ActionChains(driver).move_to_element(nav_item).perform()

# 获取悬停后更新的页面源码
updated_html = driver.page_source

# 用bs4解析提取内容
soup = BeautifulSoup(updated_html, 'html.parser')
target_nav_content = soup.select('.dropdown-menu.show')  # 替换成你要提取的导航内容选择器

# 处理提取到的内容
for item in target_nav_content:
    print(item.get_text(strip=True))

# 关闭浏览器
driver.quit()

方案2:抓包直接调用接口(效率更高)

如果悬停时的内容是通过AJAX请求从后端获取的,可以直接抓包找到接口,用requests请求获取数据:

  1. 打开Chrome开发者工具(F12),切换到Network面板,勾选XHR/Fetch
  2. 鼠标悬停导航栏,观察面板里出现的新请求,找到返回导航内容的接口
  3. 复制接口URL、请求头、参数,用requests直接请求:
    import requests
    
    url = '你抓到的接口URL'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.5563.65 Safari/537.36'
        # 其他必要的请求头,比如Cookie、Referer等
    }
    params = {
        # 接口需要的参数,比如分类ID等
    }
    
    response = requests.get(url, headers=headers, params=params)
    nav_data = response.json()  # 如果返回是JSON格式
    # 处理数据
    

关于是否需要复现代码

是的,你需要编写对应逻辑的代码:如果用无头浏览器,就写模拟悬停+解析的代码;如果抓接口,就写请求接口+处理数据的代码,根据你能抓到的情况选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 19:58:17