如何在NodeJS中获取其他网站的lastModified属性
获取网站最后修改日期的Node.js解决方案
方法1:通过HTTP响应头获取(最可靠)
浏览器开发者工具中看到的网站最后修改日期,本质来自HTTP响应头的Last-Modified字段,直接提取这个字段比读取document.lastModified更准确——后者是浏览器根据当前DOM生成的时间,并非服务器记录的页面实际修改时间。
用Puppeteer实现的修正代码:
const puppeteer = require('puppeteer'); async function getLastModifiedDate() { const browser = await puppeteer.launch(); const page = await browser.newPage(); // 监听响应事件,提取目标页面的Last-Modified头 let lastModified; page.on('response', (response) => { if (response.url() === 'https://www.tbsnews.net/economy/bsec-chairman-stresses-restoring-investor-confidence-mutual-funds-500126') { lastModified = response.headers()['last-modified']; } }); await page.goto('https://www.tbsnews.net/economy/bsec-chairman-stresses-restoring-investor-confidence-mutual-funds-500126'); console.log('服务器返回的最后修改时间:', lastModified); await browser.close(); } getLastModifiedDate();
方法2:提取页面内显示的修改时间
如果网站未返回Last-Modified响应头,但页面内有明确显示的发布/更新时间(比如文章下方的时间戳),可以直接定位DOM元素提取:
const puppeteer = require('puppeteer'); async function getPageDisplayedModifiedTime() { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto('https://www.tbsnews.net/economy/bsec-chairman-stresses-restoring-investor-confidence-mutual-funds-500126'); // 根据页面实际结构调整选择器(可从Chrome开发者工具复制) const modifiedTime = await page.evaluate(() => { const timeElement = document.querySelector('.article__meta-time'); return timeElement ? timeElement.textContent.trim() : '未找到修改时间'; }); console.log('页面显示的最后修改时间:', modifiedTime); await browser.close(); } getPageDisplayedModifiedTime();
原代码无效的原因
你之前调用的document.lastModified是浏览器基于当前DOM构建时刻生成的时间,和服务器记录的页面实际修改日期无关,所以会返回代码执行时的时间,而非目标网站的真实修改时间。
内容的提问来源于stack exchange,提问作者Parvej Bapary
相关产品推荐
相关产品推荐

