<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>热点新闻分析</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js" integrity="sha512-BNaRQnYJYiPSqHHDb58B0yaPfCu+Wgds8Gp/gU33kqBtgNS4tSPHuGibyoeqMV/TJlSKda6FXzoEyYGjTe+vXA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<style>
* { box-sizing: border-box; }
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
margin: 0;
padding: 16px;
background: #fafafa;
color: #333;
line-height: 1.5;
}
.container {
max-width: 600px;
margin: 0 auto;
background: white;
border-radius: 12px;
overflow: hidden;
box-shadow: 0 2px 16px rgba(0,0,0,0.06);
}
.header {
background: linear-gradient(135deg, #7a72ff 0%, #3aafed 100%);
color: #fff;
padding: 32px 24px;
text-align: center;
position: relative;
}
.save-buttons {
position: absolute;
top: 16px;
right: 16px;
display: flex;
gap: 8px;
}
.save-btn {
background: rgba(255, 255, 255, 0.2);
border: 1px solid rgba(255, 255, 255, 0.3);
color: white;
padding: 8px 16px;
border-radius: 6px;
cursor: pointer;
font-size: 13px;
font-weight: 500;
transition: all 0.2s ease;
backdrop-filter: blur(10px);
white-space: nowrap;
}
.save-btn:hover {
background: rgba(255, 255, 255, 0.3);
border-color: rgba(255, 255, 255, 0.5);
transform: translateY(-1px);
}
.save-btn:active {
transform: translateY(0);
}
.save-btn:disabled {
opacity: 0.6;
cursor: not-allowed;
}
.header-title {
font-size: 22px;
font-weight: 700;
margin: 0 0 20px 0;
}
.header-info {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 16px;
font-size: 14px;
opacity: 0.95;
}
.info-item {
text-align: center;
}
.info-label {
display: block;
font-size: 12px;
opacity: 0.8;
margin-bottom: 4px;
}
.info-value {
font-weight: 600;
font-size: 16px;
}
.content {
padding: 24px;
}
.word-group {
margin-bottom: 40px;
}
.word-group:first-child {
margin-top: 0;
}
.word-header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 20px;
padding-bottom: 8px;
border-bottom: 1px solid #f0f0f0;
}
.word-info {
display: flex;
align-items: center;
gap: 12px;
}
.word-name {
font-size: 17px;
font-weight: 600;
color: #1a1a1a;
}
.word-count {
color: #666;
font-size: 13px;
font-weight: 500;
}
.word-count.hot { color: #dc2626; font-weight: 600; }
.word-count.warm { color: #ea580c; font-weight: 600; }
.word-index {
color: #999;
font-size: 12px;
}
.news-item {
margin-bottom: 20px;
padding: 16px 0;
border-bottom: 1px solid #f5f5f5;
position: relative;
display: flex;
gap: 12px;
align-items: center;
}
.news-item:last-child {
border-bottom: none;
}
.news-item.new::after {
content: "NEW";
position: absolute;
top: 12px;
right: 0;
background: #fbbf24;
color: #92400e;
font-size: 9px;
font-weight: 700;
padding: 3px 6px;
border-radius: 4px;
letter-spacing: 0.5px;
}
.news-number {
color: #999;
font-size: 13px;
font-weight: 600;
min-width: 20px;
text-align: center;
flex-shrink: 0;
background: #f8f9fa;
border-radius: 50%;
width: 24px;
height: 24px;
display: flex;
align-items: center;
justify-content: center;
align-self: flex-start;
margin-top: 8px;
}
.news-content {
flex: 1;
min-width: 0;
padding-right: 40px;
}
.news-item.new .news-content {
padding-right: 50px;
}
.news-header {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 8px;
flex-wrap: wrap;
}
.source-name {
color: #666;
font-size: 12px;
font-weight: 500;
}
.rank-num {
color: #fff;
background: #6b7280;
font-size: 10px;
font-weight: 700;
padding: 2px 6px;
border-radius: 10px;
min-width: 18px;
text-align: center;
}
.rank-num.top { background: #dc2626; }
.rank-num.high { background: #ea580c; }
.time-info {
color: #999;
font-size: 11px;
}
.count-info {
color: #059669;
font-size: 11px;
font-weight: 500;
}
.news-title {
font-size: 15px;
line-height: 1.4;
color: #1a1a1a;
margin: 0;
}
.news-link {
color: #2563eb;
text-decoration: none;
}
.news-link:hover {
text-decoration: underline;
}
.news-link:visited {
color: #7c3aed;
}
.topic-trend-section {
margin-top: 40px;
padding-top: 24px;
border-top: 2px solid #f0f0f0;
}
.topic-trend-title {
color: #1a1a1a;
font-size: 16px;
font-weight: 600;
margin: 0 0 20px 0;
}
.viral-topic-item {
padding: 16px 0;
border-bottom: 1px solid #f5f5f5;
}
.viral-topic-item:last-child {
border-bottom: none;
}
.viral-topic-header {
display: flex;
align-items: center;
gap: 12px;
margin-bottom: 12px;
}
.viral-topic-keyword {
font-size: 16px;
font-weight: 600;
}
.topic-item {
display: flex;
align-items: center;
gap: 12px;
padding: 8px 0;
border-bottom: 1px solid #f9f9f9;
}
.topic-item:last-child {
border-bottom: none;
}
.viral-topic-stats {
font-size: 12px;
color: #666;
}
.viral-topic-stats .new { color: #dc2626; font-weight: bold; }
.viral-topic-stats .up { color: #f59e0b; font-weight: bold; }
.viral-topic-stats .level-high { color: #dc2626; font-weight: bold; }
.viral-topic-stats .level-mid { color: #f59e0b; font-weight: bold; }
.viral-sample-titles {
list-style: none;
padding-left: 16px;
margin: 0;
font-size: 13px;
}
.viral-sample-titles li {
color: #666;
padding: 4px 0;
position: relative;
}
.viral-sample-titles li::before { content: '▪'; position: absolute; left: -14px; color: #ccc; }
.new-section {
margin-top: 40px;
padding-top: 24px;
border-top: 2px solid #f0f0f0;
}
.new-section-title {
color: #1a1a1a;
font-size: 16px;
font-weight: 600;
margin: 0 0 20px 0;
}
.new-source-group {
margin-bottom: 24px;
}
.new-source-title {
color: #666;
font-size: 13px;
font-weight: 500;
margin: 0 0 12px 0;
padding-bottom: 6px;
border-bottom: 1px solid #f5f5f5;
}
.new-item {
display: flex;
align-items: center;
gap: 12px;
padding: 8px 0;
border-bottom: 1px solid #f9f9f9;
}
.new-item:last-child {
border-bottom: none;
}
.new-item-number {
color: #999;
font-size: 12px;
font-weight: 600;
min-width: 18px;
text-align: center;
flex-shrink: 0;
background: #f8f9fa;
border-radius: 50%;
width: 20px;
height: 20px;
display: flex;
align-items: center;
justify-content: center;
}
.new-item-rank {
color: #fff;
background: #6b7280;
font-size: 10px;
font-weight: 700;
padding: 3px 6px;
border-radius: 8px;
min-width: 20px;
text-align: center;
flex-shrink: 0;
}
.new-item-rank.top { background: #dc2626; }
.new-item-rank.high { background: #ea580c; }
.new-item-content {
flex: 1;
min-width: 0;
}
.new-item-title {
font-size: 14px;
line-height: 1.4;
color: #1a1a1a;
margin: 0;
}
.error-section {
background: #fef2f2;
border: 1px solid #fecaca;
border-radius: 8px;
padding: 16px;
margin-bottom: 24px;
}
.error-title {
color: #dc2626;
font-size: 14px;
font-weight: 600;
margin: 0 0 8px 0;
}
.error-list {
list-style: none;
padding: 0;
margin: 0;
}
.error-item {
color: #991b1b;
font-size: 13px;
padding: 2px 0;
font-family: 'SF Mono', Consolas, monospace;
}
.footer {
margin-top: 32px;
padding: 20px 24px;
background: #f8f9fa;
border-top: 1px solid #e5e7eb;
text-align: center;
}
.footer-content {
font-size: 13px;
color: #6b7280;
line-height: 1.6;
}
.footer-link {
color: #4f46e5;
text-decoration: none;
font-weight: 500;
transition: color 0.2s ease;
}
.footer-link:hover {
color: #7c3aed;
text-decoration: underline;
}
.project-name {
font-weight: 600;
color: #374151;
}
@media (max-width: 480px) {
body { padding: 12px; }
.header { padding: 24px 20px; }
.content { padding: 20px; }
.footer { padding: 16px 20px; }
.header-info { grid-template-columns: 1fr; gap: 12px; }
.news-header { gap: 6px; }
.news-content { padding-right: 45px; }
.news-item { gap: 8px; }
.new-item { gap: 8px; }
.news-number { width: 20px; height: 20px; font-size: 12px; }
.save-buttons {
position: static;
margin-bottom: 16px;
display: flex;
gap: 8px;
justify-content: center;
flex-direction: column;
width: 100%;
}
.save-btn {
width: 100%;
}
}
</style>
</head>
<body>
<div class="container">
<div class="header">
<div class="save-buttons">
<button class="save-btn" onclick="saveAsImage()">保存为图片</button>
<button class="save-btn" onclick="saveAsMultipleImages()">分段保存</button>
</div>
<div class="header-title">热点新闻分析</div>
<div class="header-info">
<div class="info-item">
<span class="info-label">报告类型</span>
<span class="info-value">实时分析</span>
</div>
<div class="info-item">
<span class="info-label">新闻总数</span>
<span class="info-value">191 条</span>
</div>
<div class="info-item">
<span class="info-label">热点新闻</span>
<span class="info-value">9 条</span>
</div>
<div class="info-item">
<span class="info-label">生成时间</span>
<span class="info-value">02-09 20:58</span>
</div>
</div>
</div>
<div class="content">
<div class="word-group">
<div class="word-header">
<div class="word-info">
<div class="word-name">ai 人工智能</div>
<div class="word-count warm">6 条</div>
</div>
<div class="word-index">1/2</div>
</div>
<div class="news-item new">
<div class="news-number">1</div>
<div class="news-content">
<div class="news-header">
<span class="source-name">bilibili 热搜</span><span class="rank-num top">2</span><span class="time-info">20时58分</span>
</div>
<div class="news-title"><a href="https://search.bilibili.com/all?keyword=AIGC%E6%95%B4%E6%B4%BB%E6%96%B0%E6%98%A5%E8%81%94%E6%AC%A2%E4%BC%9A" target="_blank" class="news-link">AIGC整活新春联欢会</a>
</div>
</div>
</div>
<div class="news-item new">
<div class="news-number">2</div>
<div class="news-content">
<div class="news-header">
<span class="source-name">财联社热门</span><span class="rank-num high">4</span><span class="time-info">20时58分</span>
</div>
<div class="news-title"><a href="https://www.cls.cn/detail/2284846" target="_blank" class="news-link">一图看懂|AI应用“春节档”持续上新,下一波神仙打架已就位?</a>
</div>
</div>
</div>
<div class="news-item new">
<div class="news-number">3</div>
<div class="news-content">
<div class="news-header">
<span class="source-name">华尔街见闻</span><span class="rank-num ">6</span><span class="time-info">20时58分</span>
</div>
<div class="news-title"><a href="https://wallstreetcn.com/articles/3765271" target="_blank" class="news-link">创业板涨3%,AI应用、CPO暴涨,光伏掀涨停潮,恒科指涨1%,澜起科技IPO首日涨超60%</a>
</div>
</div>
</div>
<div class="news-item new">
<div class="news-number">4</div>
<div class="news-content">
<div class="news-header">
<span class="source-name">财联社热门</span><span class="rank-num ">9</span><span class="time-info">20时58分</span>
</div>
<div class="news-title"><a href="https://www.cls.cn/detail/2284501" target="_blank" class="news-link">回到60年前!硅谷大厂竞相复刻IBM模式:垂直整合成AI博弈终极答案?</a>
</div>
</div>
</div>
<div class="news-item new">
<div class="news-number">5</div>
<div class="news-content">
<div class="news-header">
<span class="source-name">财联社热门</span><span class="rank-num ">13</span><span class="time-info">20时58分</span>
</div>
<div class="news-title"><a href="https://www.cls.cn/detail/2284689" target="_blank" class="news-link">【每日收评】创业板指高开高走涨近3%,全市场超4600股飘红,AI应用方向集体爆发</a>
</div>
</div>
</div>
<div class="news-item new">
<div class="news-number">6</div>
<div class="news-content">
<div class="news-header">
<span class="source-name">微博</span><span class="rank-num ">18</span><span class="time-info">20时58分</span>
</div>
<div class="news-title"><a href="https://s.weibo.com/weibo?q=%23%E5%8D%83%E5%AE%B6%E4%BA%BAAI%E8%B4%AD%E7%89%A9%E5%AE%9E%E5%BD%95%23&t=31&band_rank=18&Refer=top" target="_blank" class="news-link">千家人AI购物实录</a>
</div>
</div>
</div>
</div>
<div class="word-group">
<div class="word-header">
<div class="word-info">
<div class="word-name">特斯拉 马斯克</div>
<div class="word-count ">3 条</div>
</div>
<div class="word-index">2/2</div>
</div>
<div class="news-item new">
<div class="news-number">1</div>
<div class="news-content">
<div class="news-header">
<span class="source-name">贴吧</span><span class="rank-num high">5</span><span class="time-info">20时58分</span>
</div>
<div class="news-title"><a href="https://tieba.baidu.com/hottopic/browse/hottopic?topic_id=28350442&amp;topic_name=%E8%90%9D%E8%8E%89%E5%B2%9B%E5%8E%BB%E4%B8%8D%E6%88%90%2C%E9%A9%AC%E6%96%AF%E5%85%8B%E6%94%B9%E5%A5%94%E6%9C%88%E7%90%83" target="_blank" class="news-link">萝莉岛去不成,马斯克改奔月球</a>
</div>
</div>
</div>
<div class="news-item new">
<div class="news-number">2</div>
<div class="news-content">
<div class="news-header">
<span class="source-name">华尔街见闻</span><span class="rank-num ">10</span><span class="time-info">20时58分</span>
</div>
<div class="news-title"><a href="https://wallstreetcn.com/articles/3765295" target="_blank" class="news-link">SpaceX大转向!马斯克改口:火星太远月球更快,十年内建“月球城市”</a>
</div>
</div>
</div>
<div class="news-item new">
<div class="news-number">3</div>
<div class="news-content">
<div class="news-header">
<span class="source-name">知乎</span><span class="rank-num ">20</span><span class="time-info">20时58分</span>
</div>
<div class="news-title"><a href="https://www.zhihu.com/question/2004143319609993151" target="_blank" class="news-link">马斯克警告「没有 AI 和机器人,国债危机下美国 1000% 会破产」,AI 和机器人能解美债问题吗?</a>
</div>
</div>
</div>
</div>
<div class="topic-trend-section">
<div class="topic-trend-title">🔥 异常热度话题</div>
<div class="viral-topic-item">
<div class="viral-topic-header">
<div class="viral-topic-keyword">日本众议院选举结果公布</div>
<div class="viral-topic-stats">
5条提及 · <span class="new">新话题</span> · <span class="level-high">高热度</span>
</div>
</div>
<ul class="viral-sample-titles"><li>日本众议院选举结果公布</li><li>日本众议院选举结果公布:由自民党和日本维新会组成的执政联盟获过半数议席</li><li>日本众议院选举结果公布</li></ul></div></div>
<div class="topic-trend-section">
<div class="topic-trend-title">✨ 关注话题趋势</div>
<div class="word-group">
<div class="word-header">
<div class="word-info">
<div class="word-name">AMD</div>
<div class="word-count">8 条提及 <span style="color: #059669;">(↓100.00%)</span></div>
</div>
</div>
<div class="news-item">
<div class="news-content" style="padding-right: 0;">
<img src="data:image/png;base64,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" alt="AMD 趋势图" style="width: 100%; height: auto;" />
</div>
</div>
</div></div>
</div>
<div class="footer">
<div class="footer-content">
</div>
</div>
</div>
<script>
async function saveAsImage() {
const button = event.target;
const originalText = button.textContent;
try {
button.textContent = '生成中...';
button.disabled = true;
window.scrollTo(0, 0);
// 等待页面稳定
await new Promise(resolve => setTimeout(resolve, 200));
// 截图前隐藏按钮
const buttons = document.querySelector('.save-buttons');
buttons.style.visibility = 'hidden';
// 再次等待确保按钮完全隐藏
await new Promise(resolve => setTimeout(resolve, 100));
const container = document.querySelector('.container');
const canvas = await html2canvas(container, {
backgroundColor: '#ffffff',
scale: 1.5,
useCORS: true,
allowTaint: false,
imageTimeout: 10000,
removeContainer: false,
foreignObjectRendering: false,
logging: false,
width: container.offsetWidth,
height: container.offsetHeight,
x: 0,
y: 0,
scrollX: 0,
scrollY: 0,
windowWidth: window.innerWidth,
windowHeight: window.innerHeight
});
buttons.style.visibility = 'visible';
const link = document.createElement('a');
const now = new Date();
const filename = `TrendRadar_热点新闻分析_${now.getFullYear()}${String(now.getMonth() + 1).padStart(2, '0')}${String(now.getDate()).padStart(2, '0')}_${String(now.getHours()).padStart(2, '0')}${String(now.getMinutes()).padStart(2, '0')}.png`;
link.download = filename;
link.href = canvas.toDataURL('image/png', 1.0);
// 触发下载
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
button.textContent = '保存成功!';
setTimeout(() => {
button.textContent = originalText;
button.disabled = false;
}, 2000);
} catch (error) {
const buttons = document.querySelector('.save-buttons');
buttons.style.visibility = 'visible';
button.textContent = '保存失败';
setTimeout(() => {
button.textContent = originalText;
button.disabled = false;
}, 2000);
}
}
async function saveAsMultipleImages() {
const button = event.target;
const originalText = button.textContent;
const container = document.querySelector('.container');
const scale = 1.5;
const maxHeight = 5000 / scale;
try {
button.textContent = '分析中...';
button.disabled = true;
// 获取所有可能的分割元素
const newsItems = Array.from(container.querySelectorAll('.news-item'));
const wordGroups = Array.from(container.querySelectorAll('.word-group'));
const newSection = container.querySelector('.new-section');
const errorSection = container.querySelector('.error-section');
const header = container.querySelector('.header');
const footer = container.querySelector('.footer');
// 计算元素位置和高度
const containerRect = container.getBoundingClientRect();
const elements = [];
// 添加header作为必须包含的元素
elements.push({
type: 'header',
element: header,
top: 0,
bottom: header.offsetHeight,
height: header.offsetHeight
});
// 添加错误信息(如果存在)
if (errorSection) {
const rect = errorSection.getBoundingClientRect();
elements.push({
type: 'error',
element: errorSection,
top: rect.top - containerRect.top,
bottom: rect.bottom - containerRect.top,
height: rect.height
});
}
// 按word-group分组处理news-item
wordGroups.forEach(group => {
const groupRect = group.getBoundingClientRect();
const groupNewsItems = group.querySelectorAll('.news-item');
// 添加word-group的header部分
const wordHeader = group.querySelector('.word-header');
if (wordHeader) {
const headerRect = wordHeader.getBoundingClientRect();
elements.push({
type: 'word-header',
element: wordHeader,
parent: group,
top: groupRect.top - containerRect.top,
bottom: headerRect.bottom - containerRect.top,
height: headerRect.height
});
}
// 添加每个news-item
groupNewsItems.forEach(item => {
const rect = item.getBoundingClientRect();
elements.push({
type: 'news-item',
element: item,
parent: group,
top: rect.top - containerRect.top,
bottom: rect.bottom - containerRect.top,
height: rect.height
});
});
});
// 添加新增新闻部分
if (newSection) {
const rect = newSection.getBoundingClientRect();
elements.push({
type: 'new-section',
element: newSection,
top: rect.top - containerRect.top,
bottom: rect.bottom - containerRect.top,
height: rect.height
});
}
// 添加footer
const footerRect = footer.getBoundingClientRect();
elements.push({
type: 'footer',
element: footer,
top: footerRect.top - containerRect.top,
bottom: footerRect.bottom - containerRect.top,
height: footer.offsetHeight
});
// 计算分割点
const segments = [];
let currentSegment = { start: 0, end: 0, height: 0, includeHeader: true };
let headerHeight = header.offsetHeight;
currentSegment.height = headerHeight;
for (let i = 1; i < elements.length; i++) {
const element = elements[i];
const potentialHeight = element.bottom - currentSegment.start;
// 检查是否需要创建新分段
if (potentialHeight > maxHeight && currentSegment.height > headerHeight) {
// 在前一个元素结束处分割
currentSegment.end = elements[i - 1].bottom;
segments.push(currentSegment);
// 开始新分段
currentSegment = {
start: currentSegment.end,
end: 0,
height: element.bottom - currentSegment.end,
includeHeader: false
};
} else {
currentSegment.height = potentialHeight;
currentSegment.end = element.bottom;
}
}
// 添加最后一个分段
if (currentSegment.height > 0) {
currentSegment.end = container.offsetHeight;
segments.push(currentSegment);
}
button.textContent = `生成中 (0/${segments.length})...`;
// 隐藏保存按钮
const buttons = document.querySelector('.save-buttons');
buttons.style.visibility = 'hidden';
// 为每个分段生成图片
const images = [];
for (let i = 0; i < segments.length; i++) {
const segment = segments[i];
button.textContent = `生成中 (${i + 1}/${segments.length})...`;
// 创建临时容器用于截图
const tempContainer = document.createElement('div');
tempContainer.style.cssText = `
position: absolute;
left: -9999px;
top: 0;
width: ${container.offsetWidth}px;
background: white;
`;
tempContainer.className = 'container';
// 克隆容器内容
const clonedContainer = container.cloneNode(true);
// 移除克隆内容中的保存按钮
const clonedButtons = clonedContainer.querySelector('.save-buttons');
if (clonedButtons) {
clonedButtons.style.display = 'none';
}
tempContainer.appendChild(clonedContainer);
document.body.appendChild(tempContainer);
// 等待DOM更新
await new Promise(resolve => setTimeout(resolve, 100));
// 使用html2canvas截取特定区域
const canvas = await html2canvas(clonedContainer, {
backgroundColor: '#ffffff',
scale: scale,
useCORS: true,
allowTaint: false,
imageTimeout: 10000,
logging: false,
width: container.offsetWidth,
height: segment.end - segment.start,
x: 0,
y: segment.start,
windowWidth: window.innerWidth,
windowHeight: window.innerHeight
});
images.push(canvas.toDataURL('image/png', 1.0));
// 清理临时容器
document.body.removeChild(tempContainer);
}
// 恢复按钮显示
buttons.style.visibility = 'visible';
// 下载所有图片
const now = new Date();
const baseFilename = `TrendRadar_热点新闻分析_${now.getFullYear()}${String(now.getMonth() + 1).padStart(2, '0')}${String(now.getDate()).padStart(2, '0')}_${String(now.getHours()).padStart(2, '0')}${String(now.getMinutes()).padStart(2, '0')}`;
for (let i = 0; i < images.length; i++) {
const link = document.createElement('a');
link.download = `${baseFilename}_part${i + 1}.png`;
link.href = images[i];
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
// 延迟一下避免浏览器阻止多个下载
await new Promise(resolve => setTimeout(resolve, 100));
}
button.textContent = `已保存 ${segments.length} 张图片!`;
setTimeout(() => {
button.textContent = originalText;
button.disabled = false;
}, 2000);
} catch (error) {
console.error('分段保存失败:', error);
const buttons = document.querySelector('.save-buttons');
buttons.style.visibility = 'visible';
button.textContent = '保存失败';
setTimeout(() => {
button.textContent = originalText;
button.disabled = false;
}, 2000);
}
}
document.addEventListener('DOMContentLoaded', function() {
window.scrollTo(0, 0);
});
</script>
</body>
</html>