<!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">100 条</span>
</div>
<div class="info-item">
<span class="info-label">热点新闻</span>
<span class="info-value">2 条</span>
</div>
<div class="info-item">
<span class="info-label">生成时间</span>
<span class="info-value">01-08 23:16</span>
</div>
</div>
</div>
<div class="content">
<div class="word-group">
<div class="word-header">
<div class="word-info">
<div class="word-name">特斯拉 马斯克</div>
<div class="word-count ">1 条</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">知乎</span><span class="rank-num ">14</span><span class="time-info">23时16分</span>
</div>
<div class="news-title"><a href="https://www.zhihu.com/question/1990475866191464200" target="_blank" class="news-link">特斯拉完全自动驾驶系统 FSD 零接管横穿美国,做到这点有多难?算是自动驾驶系统的里程碑吗?</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 ">1 条</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 ">13</span><span class="time-info">23时16分</span>
</div>
<div class="news-title"><a href="https://www.cls.cn/detail/2251755" target="_blank" class="news-link">【明日主题前瞻】开启商业航天的新篇章,国内首个海上回收复用火箭基地在钱塘开工</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">
3条提及 · <span class="up">↑3%</span> · <span class="level-mid">中热度</span>
</div>
</div>
<ul class="viral-sample-titles"><li>美国宣布已扣押“贝拉1”号油轮</li><li>美军动用直升机和海岸警卫队舰艇,扣押俄潜艇护航的“水手”号油轮</li><li>美军在北大西洋扣押贝拉 1 号油轮,游轮当前悬挂俄罗斯国旗,此前曾有俄罗斯潜艇护航,如何看待此事?</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">自动驾驶</div>
<div class="word-count">4 条提及 <span style="color: #dc2626;">(↑0.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="自动驾驶 趋势图" 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>