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

如何在JavaScript控制台实现目标数据表自动滚动加载至末尾?

解决Investing.com ISM制造业就业数据页面自动加载全部数据的问题

你需要在JS控制台执行代码,自动加载对应页面的数据表到末尾,但之前的“显示更多”点击代码没生效,原代码如下:

function autoClickShowMore() { 
    var showMoreButton = document.querySelector('#showMoreHistory256, .showMoreReplies.block a');
 
    if (showMoreButton) {
        console.log('Clicking "Show more" button...');
        showMoreButton.click();
 
        setTimeout(autoClickShowMore, 1000); // Adjust the delay as needed
    } else {
        console.log('No "Show more" button found.');
    }
}

autoClickShowMore();

问题原因

原代码的选择器可能已经失效——网站的元素ID或类名可能更新,或者按钮是动态生成的,直接用静态选择器找不到;另外部分网站的按钮需要模拟真实点击事件,而非直接调用click()方法。

修正方案

方案1:修正选择器+模拟真实点击

先右键页面上的“显示更多”按钮,选择“检查”查看元素的实际类名/ID,替换下面代码中的选择器,然后执行:

function loadAllData() {
    // 替换为你实际找到的"显示更多"按钮选择器,比如当前页面可能是.showMore
    const showMoreBtn = document.querySelector('.showMore');
    if (showMoreBtn) {
        // 滚动到按钮位置,确保元素处于可交互状态
        showMoreBtn.scrollIntoView({ behavior: 'smooth', block: 'center' });
        // 模拟真实鼠标点击事件,适配部分网站的自定义绑定
        showMoreBtn.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true }));
        console.log('已点击「显示更多」,等待数据加载...');
        // 根据页面加载速度调整延迟,建议2-5秒避免触发反爬
        setTimeout(loadAllData, 2500);
    } else {
        console.log('已加载全部数据,滚动至页面底部');
        // 自动滚动到页面最末尾
        window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' });
    }
}

// 启动自动加载
loadAllData();

方案2:监听动态元素加载(适配按钮延迟出现的情况)

如果页面是异步渲染,按钮一开始不存在,可以用MutationObserver监听容器变化,自动触发点击:

// 替换为数据表所在的父容器选择器,比如当前页面的#economicCalendarData
const targetContainer = document.querySelector('#economicCalendarData');

// 创建观察者实例
const observer = new MutationObserver(() => {
    const showMoreBtn = document.querySelector('.showMore');
    if (showMoreBtn) {
        showMoreBtn.scrollIntoView();
        showMoreBtn.dispatchEvent(new MouseEvent('click', { bubbles: true }));
        console.log('自动点击「显示更多」');
        // 点击后暂时断开监听,避免重复触发
        observer.disconnect();
        // 加载完成后重新监听
        setTimeout(() => observer.observe(targetContainer, config), 3000);
    } else {
        console.log('所有数据已加载完成');
        observer.disconnect();
        window.scrollTo({ top: document.body.scrollHeight });
    }
});

// 监听配置:监听子元素变化
const config = { childList: true, subtree: true };
// 启动监听
observer.observe(targetContainer, config);

// 初始检查一次
const initialBtn = document.querySelector('.showMore');
if (initialBtn) initialBtn.click();

注意事项

  • 网站可能有反爬限制,不要把延迟设得太短,建议2秒以上
  • 每次访问页面,元素选择器可能变化,需要重新检查按钮的类名/ID
  • 如果点击仍无反应,可以尝试在控制台手动点击按钮,确认按钮是否需要登录或有其他权限限制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 16:38:22