添加日期显示功能,更新 .gitignore,创建展示知乎数据的 HTML 页面及相关 JSON 数据

This commit is contained in:
LingandRX 2024-11-25 23:24:18 +08:00
parent 84c2377524
commit 20eb44ba4d
7 changed files with 340 additions and 1224 deletions

3
.gitignore vendored
View File

@ -1 +1,2 @@
/node_modules
/node_modules
*zhihu_hot.json

56
createHtml.js Normal file
View File

@ -0,0 +1,56 @@
let json = [
{
shortTitle:
'中信建投发布研报称「中国房价有望在 2026 年前后止跌回稳」,怎样看待这一预测?影响因素有哪些?',
title:
'11 月 23 日,中信建投发布研报认为,参考止跌回稳的国际经验,海外 5 国房价下行周期在 5-10 年左右,跌幅在 20%-40% 左右,参照此,中国房价有望在 2026 年前后止跌回稳。 就在本周五,广州宣布取消普通住宅和非普通住宅标准,至此,四大一线城市全部取消普通住房和非普通住房标准,购房费用少一大笔。 随着一系列明确促进房地产市场止跌回稳的利好政策陆续落地,房地产市场预期进一步改善。 中信建投: 房价有望在 2026 年前后止跌回稳 据官方数据10 月 70 个大中城市中,新建商品住宅销售价格环比上涨城市有 7 个,比上月增加 4 个。二手住宅环比上涨城市有 8 个,比上月增加 8 个。 11 月 23 日,中信建投研报认为,自 9 月底政治局会议提出要促进房地产市场止跌回稳后,中央和地方层面政策持续出台。 中央层面推出专项债收储、棚改货币化安置、房地产税收调整等政策地方层面则继续在限购、首付比例等方面作出优化。政策支持下10 月重点 40 城新房成交同比上升 5.0%13 城二手房成交同比上升 23.8%,市场景气度显著提升。 展望 2025 年,预计核心城市有望率先回稳,重要指标降幅收窄,销售面积、新开工面积、竣工面积、投资额分别下滑 8.3% 、 17.9% 、 7.7% 、 10.7%。地产开发业务仍在筑底中,「并购六条」政策红利驱动,建议关注向新质生产力转型的房企;同时防范通缩风险已成为当前政策的重要考量,推荐优质商业类地产公司。 参考止跌回稳的国际经验,中国房价或将在 2026 年前后企稳。 美国、日本、俄罗斯、西班牙、泰国采用宽松的货币及财政政策、接管风险主体、降低购房成本等方式推动房地产市场的止跌回稳。5 个国家房价下行周期持续时间在 5-10 年左右,周期内跌幅在 20%-40% 左右。中国房价已下跌 3 年、跌幅近 15%,参考国际经验,房价或将在 2026 年前后止跌回稳。利好政策陆续落地!中国房价有望在 2026 年前后止跌回稳',
popularity: '1090 万热度',
link: 'https://www.zhihu.com/question/5073499722',
},
{
shortTitle: '缅北规模化电诈园区全部被铲除763 名在缅中国籍嫌犯移交我方,哪些信息值得关注?',
title:
'为纵深打击缅北涉我电信网络诈骗犯罪,全面清剿诈骗窝点,依法缉捕涉诈人员,近日,公安部部署云南公安机关加强与缅甸相关地方执法部门的警务执法合作,首次在缅甸当阳地区抓获 1079 名实施跨境电信网络诈骗的犯罪嫌疑人,其中中国籍犯罪嫌疑人 763 名。目前,全部中国籍犯罪嫌疑人已被移交我方。这是打击缅北涉我电信网络诈骗犯罪专项工作开展以来,在缅甸纵深地带取得的又一重大突破。 去年公安部部署开展打击缅北涉我电信网络诈骗犯罪专项工作以来,中缅双方通过警务执法合作和一系列打击行动,累计抓获 5.3 万余名中国籍涉诈犯罪嫌疑人,临近我边境的缅北地区规模化电诈园区全部被铲除。在强力打击震慑下,涉诈人员不断向缅甸万海、当阳、妙瓦底等纵深地区转移,继续招募、诱骗境内人员非法出境参与电诈犯罪,并衍生出非法拘禁、故意伤害甚至绑架杀人等严重暴力犯罪活动,严重危害我国公民生命财产安全。 公安部对此高度重视,部署云南公安机关持续加强警务执法合作,联合缅甸相关地方执法部门开展打击行动,于 11 月 17 日在缅甸当阳地区抓获中国籍涉诈犯罪嫌疑人 763 名,包括网上在逃人员 69 名缴获电脑、手机、诈骗话术脚本等一大批作案工具。11 月 19 日,相关犯罪嫌疑人及涉案物品已通过云南临沧永和口岸移交我方。 公安部有关负责人表示,公安机关将继续保持对跨境电信网络诈骗犯罪的严打高压态势,特别是对缅甸万海、当阳、妙瓦底等诈骗窝点聚集区,将进一步加大警务执法合作力度,坚决铲除涉我电信网络诈骗犯罪「毒瘤」。同时,公安机关提醒广大人民群众,切勿轻信境外高薪招聘信息,避免落入违法犯罪陷阱,切实维护自身合法权益。 来源央视新闻缅北规模化电诈园区全部被铲除763 名在缅中国籍嫌犯移交我方',
popularity: '459 万热度',
link: 'https://www.zhihu.com/question/4757292409',
},
];
function setDiv(item) {
return `<div>
<h2><a href="${item.link}">${item.shortTitle}</a></h2>
<p>热度${item.popularity}</p>
<p class="popularity">${item.title}</p>
</div>`;
}
let content = json.reduce((accumulator, currentValue) => accumulator + setDiv(currentValue), '');
console.log(content);
let html = `
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<title>展示 知乎 数据</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
}
h2 {
color: #333;
}
p {
line-height: 1.6;
}
.popularity {
color: #888;
}
</style>
</head>
<body>
${content}
</body>
</html>
`;

3
date.js Normal file
View File

@ -0,0 +1,3 @@
let date = new Date().getDate();
console.log(date);

View File

@ -1,45 +1,127 @@
// fetch('https://www.baidu.com')
// .then((res) => {
// console.log(res);
// console.log(typeof res);
// console.log(res?.url);
// })
// .catch((err) => {
// console.log(err);
// });
const got = require('got');
const timeout = 15000;
const push_config = {
// 官方文档http://www.pushplus.plus/
PUSH_PLUS_TOKEN: '79e01a66036642e5969d52a5952b5cb7', // push+ 微信推送的用户令牌
PUSH_PLUS_USER: '', // push+ 微信推送的群组编码
};
const $ = {
post: (params, callback) => {
const { url, ...others } = params;
got.post(url, others).then(
(res) => {
let body = res.body;
try {
body = JSON.parse(body);
} catch (error) {}
callback(null, res, body);
},
(err) => {
callback(err?.response?.body || err);
}
);
},
get: (params, callback) => {
const { url, ...others } = params;
got.get(url, others).then(
(res) => {
let body = res.body;
try {
body = JSON.parse(body);
} catch (error) {}
callback(null, res, body);
},
(err) => {
callback(err?.response?.body || err);
}
);
},
logErr: console.log,
};
function pushPlusNotify(text, desp) {
return new Promise((resolve) => {
const { PUSH_PLUS_TOKEN, PUSH_PLUS_USER } = push_config;
if (PUSH_PLUS_TOKEN) {
desp = desp.replace(/[\n\r]/g, '<br>'); // 默认为html, 不支持plaintext
const body = {
token: `${PUSH_PLUS_TOKEN}`,
title: `${text}`,
content: `${desp}`,
topic: `${PUSH_PLUS_USER}`,
};
const options = {
url: `https://www.pushplus.plus/send`,
body: JSON.stringify(body),
headers: {
'Content-Type': ' application/json',
},
timeout,
};
$.post(options, (err, resp, data) => {
try {
if (err) {
console.log(`Push+ 发送${PUSH_PLUS_USER ? '一对多' : '一对一'}通知消息失败😞\n`, err);
} else {
if (data.code === 200) {
console.log(`Push+ 发送${PUSH_PLUS_USER ? '一对多' : '一对一'}通知消息完成🎉\n`);
} else {
console.log(
`Push+ 发送${PUSH_PLUS_USER ? '一对多' : '一对一'}通知消息异常 ${data.msg}\n`
);
}
}
} catch (e) {
$.logErr(e, resp);
} finally {
resolve(data);
}
});
} else {
resolve();
}
});
}
const myHeaders = new Headers();
myHeaders.append('accept', '*/*');
myHeaders.append('accept-language', 'zh-CN,zh;q=0.9,en;q=0.8');
myHeaders.append('cache-control', 'no-cache');
myHeaders.append(
'cookie',
'_zap=7edb0b8f-4fa8-4cd7-bf98-b8f2e9dcbcd0; d_c0=ABASThk1PRmPToqcNXh7N3rh6Mu45nX4o9A=|1726384289; __snaker__id=7NBKnwPEsBAdxz8d; q_c1=d113395419514540a767ec62034830a6|1726384298000|1726384298000; _xsrf=Jwz5KIY4sOEXIrQJdRBqeb85HkITEmxB; z_c0=2|1:0|10:1732283927|4:z_c0|80:MS4xTG9IdkJBQUFBQUFtQUFBQVlBSlZUYjFBSzJpN0RJQ1Jyd1g1MnJwWXZNc3VseWtDRFZ4TW13PT0=|238d6b33695d6cd1bf56b50cb3555cde8e1a3a87afa219c1225344f978daf06c; __zse_ck=003_bd5hGL6qo63IYx1eNEOaWWxhkWw2kiMrYzWnEG6W8A7Yu5DKbL83A0UynUIT3WX4oCsNqADFzbuit2v=02SB0bRRmjtj4hFcZGXrOGdH3oxT; Hm_lvt_98beee57fd2ef70ccdd5ca52b9740c49=1732443034,1732445363,1732452758,1732454765; HMACCOUNT=1DBE09E566A8974A; tst=h; SESSIONID=vnasVQE6nzGl4dcWT2nwj9dcYraop9BSYpkR3Pzev1u; JOID=VFsWAUnYmKpyJ55BCtypPf0_r30Wq_bKAXXKBD2y5-0fE_4nXbKw6BEmm0ALQTCQ33vIvDLs45Gt1X8TndO-Yag=; osd=UVsdA07dmKFwIJtBAd6uOP00rXoTq_3IBnDKDz-14u0UEfkiXbmy7xQmkEIMRDCb3XzNvDnu5JSt3n0UmNO1Y68=; BEC=4589376d83fd47c9203681b16177ae43; Hm_lpvt_98beee57fd2ef70ccdd5ca52b9740c49=1732454832'
);
myHeaders.append('pragma', 'no-cache');
myHeaders.append('priority', 'u=1, i');
myHeaders.append('referer', 'https://www.zhihu.com/hot');
myHeaders.append('sec-ch-ua', '"Google Chrome";v="131", "Chromium";v="131", "Not_A Brand";v="24"');
myHeaders.append('sec-ch-ua-mobile', '?0');
myHeaders.append('sec-ch-ua-platform', '"Windows"');
myHeaders.append('sec-fetch-dest', 'empty');
myHeaders.append('sec-fetch-mode', 'cors');
myHeaders.append('sec-fetch-site', 'same-origin');
myHeaders.append(
'user-agent',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36'
);
myHeaders.append('x-api-version', '3.0.76');
myHeaders.append('x-requested-with', 'fetch');
myHeaders.append('x-zse-93', '101_3_3.0');
myHeaders.append(
'x-zse-96',
'2.0_BOXFNfcgRatluI1hu0MO6y8C/KlDRffzJ/b4DmjgdrQJaJVnkwCm185lL7lQLu0q'
);
myHeaders.append(
'x-zst-81',
'3_2.0aR_sn77yn6O92wOB8hPZnQr0EMYxc4f18wNBUgpTQ6nxERFZm0Y0-4Lm-h3_tufIwJS8gcxTgJS_AuPZNcXCTwxI78YxEM20s4PGDwN8gGcYAupMWufIeQuK7AFpS6O1vukyQ_R0rRnsyukMGvxBEqeCiRnxEL2ZZrxmDucmqhPXnXFMTAoTF6RhRuLPFLV0MCNK_gULWuoMYhLy1vO8kqo8Hgt_obN0lGc8HbumpDp9SLLL4qV8ErcTv7tpBw2YHcOCQ_e0eqw8cL3mEB3Yjho0nqHmfcLf-JOm9hcqbcxf8gS10CLCQ4wqrePLXJX9XhLf2LVMLvNMkut0jvLGS6L_P9p8hG39UcxBoi9_HqpsCqfzfXOOJXOyJCgX8w2MzDLq2BxCSvXL20YLJD3LqJx0JbOf6G2GUrXOiweVwBOVg9Y08_H_0D3mPJXfSwVLwqFMsccVzCoLeqL_PDLfbDC8JCOpCweCwrOC'
);
{
myHeaders.append('accept', '*/*');
myHeaders.append('accept-language', 'zh-CN,zh;q=0.9,en;q=0.8');
myHeaders.append('cache-control', 'no-cache');
myHeaders.append(
'cookie',
'_zap=7edb0b8f-4fa8-4cd7-bf98-b8f2e9dcbcd0; d_c0=ABASThk1PRmPToqcNXh7N3rh6Mu45nX4o9A=|1726384289; __snaker__id=7NBKnwPEsBAdxz8d; q_c1=d113395419514540a767ec62034830a6|1726384298000|1726384298000; _xsrf=Jwz5KIY4sOEXIrQJdRBqeb85HkITEmxB; z_c0=2|1:0|10:1732283927|4:z_c0|80:MS4xTG9IdkJBQUFBQUFtQUFBQVlBSlZUYjFBSzJpN0RJQ1Jyd1g1MnJwWXZNc3VseWtDRFZ4TW13PT0=|238d6b33695d6cd1bf56b50cb3555cde8e1a3a87afa219c1225344f978daf06c; __zse_ck=003_bd5hGL6qo63IYx1eNEOaWWxhkWw2kiMrYzWnEG6W8A7Yu5DKbL83A0UynUIT3WX4oCsNqADFzbuit2v=02SB0bRRmjtj4hFcZGXrOGdH3oxT; Hm_lvt_98beee57fd2ef70ccdd5ca52b9740c49=1732443034,1732445363,1732452758,1732454765; HMACCOUNT=1DBE09E566A8974A; tst=h; SESSIONID=vnasVQE6nzGl4dcWT2nwj9dcYraop9BSYpkR3Pzev1u; JOID=VFsWAUnYmKpyJ55BCtypPf0_r30Wq_bKAXXKBD2y5-0fE_4nXbKw6BEmm0ALQTCQ33vIvDLs45Gt1X8TndO-Yag=; osd=UVsdA07dmKFwIJtBAd6uOP00rXoTq_3IBnDKDz-14u0UEfkiXbmy7xQmkEIMRDCb3XzNvDnu5JSt3n0UmNO1Y68=; BEC=4589376d83fd47c9203681b16177ae43; Hm_lpvt_98beee57fd2ef70ccdd5ca52b9740c49=1732454832'
);
myHeaders.append('pragma', 'no-cache');
myHeaders.append('priority', 'u=1, i');
myHeaders.append('referer', 'https://www.zhihu.com/hot');
myHeaders.append(
'sec-ch-ua',
'"Google Chrome";v="131", "Chromium";v="131", "Not_A Brand";v="24"'
);
myHeaders.append('sec-ch-ua-mobile', '?0');
myHeaders.append('sec-ch-ua-platform', '"Windows"');
myHeaders.append('sec-fetch-dest', 'empty');
myHeaders.append('sec-fetch-mode', 'cors');
myHeaders.append('sec-fetch-site', 'same-origin');
myHeaders.append(
'user-agent',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36'
);
myHeaders.append('x-api-version', '3.0.76');
myHeaders.append('x-requested-with', 'fetch');
myHeaders.append('x-zse-93', '101_3_3.0');
myHeaders.append(
'x-zse-96',
'2.0_BOXFNfcgRatluI1hu0MO6y8C/KlDRffzJ/b4DmjgdrQJaJVnkwCm185lL7lQLu0q'
);
myHeaders.append(
'x-zst-81',
'3_2.0aR_sn77yn6O92wOB8hPZnQr0EMYxc4f18wNBUgpTQ6nxERFZm0Y0-4Lm-h3_tufIwJS8gcxTgJS_AuPZNcXCTwxI78YxEM20s4PGDwN8gGcYAupMWufIeQuK7AFpS6O1vukyQ_R0rRnsyukMGvxBEqeCiRnxEL2ZZrxmDucmqhPXnXFMTAoTF6RhRuLPFLV0MCNK_gULWuoMYhLy1vO8kqo8Hgt_obN0lGc8HbumpDp9SLLL4qV8ErcTv7tpBw2YHcOCQ_e0eqw8cL3mEB3Yjho0nqHmfcLf-JOm9hcqbcxf8gS10CLCQ4wqrePLXJX9XhLf2LVMLvNMkut0jvLGS6L_P9p8hG39UcxBoi9_HqpsCqfzfXOOJXOyJCgX8w2MzDLq2BxCSvXL20YLJD3LqJx0JbOf6G2GUrXOiweVwBOVg9Y08_H_0D3mPJXfSwVLwqFMsccVzCoLeqL_PDLfbDC8JCOpCweCwrOC'
);
}
const requestOptions = {
method: 'GET',
@ -49,16 +131,93 @@ const requestOptions = {
const fs = require('fs');
fetch(
'https://www.zhihu.com/api/v3/feed/topstory/hot-lists/total?limit=50&desktop=true',
requestOptions
)
.then((response) => response.text())
.then((result) => {
console.log(result);
// if (!fs.existsSync('zhihu_hot.json')) {
// fs.mkdirSync('zhihu_hot.json');
// }
fs.writeFileSync('zhihu_hot.json', JSON.stringify(JSON.parse(result), '', 2));
})
.catch((error) => console.error(error));
function getcurrentDate() {
return `${new Date().getFullYear()}-${
new Date().getMonth() + 1
}-${new Date().getDate()}-${new Date().getMinutes()}`;
}
class zhihu_hot {
constructor({ shortTitle, title, popularity, link }) {
this.shortTitle = shortTitle;
this.title = title;
this.popularity = popularity;
this.link = link;
}
}
const saveFile = `${new Date().getTime()}_zhihu_hot.json`;
(async () => {
console.log('fetching zhihu hot list...');
let zhihu_hot_list;
await fetch(
'https://www.zhihu.com/api/v3/feed/topstory/hot-lists/total?limit=50&desktop=true',
requestOptions
)
.then((response) => response.text())
.then((result) => {
let data = JSON.parse(result)?.data;
zhihu_hot_list = data.map(
(item) =>
new zhihu_hot({
shortTitle: item.target.title_area.text,
title: item.target.excerpt_area.text,
popularity: item.target.metrics_area.text,
link: item.target.link.url,
})
);
fs.writeFileSync(saveFile, JSON.stringify(zhihu_hot_list, null, 2));
})
.catch((error) => console.error(error));
if (!zhihu_hot_list) {
await pushPlusNotify('知乎热榜更新失败', '请查看日志获取详细信息');
}
function setDiv(item) {
return `<div>
<h2><a href="${item.link}">${item.shortTitle}</a></h2>
<p>热度${item.popularity}</p>
<p class="popularity">${item.title}</p>
</div>`;
}
let content = zhihu_hot_list.reduce(
(accumulator, currentValue) => accumulator + setDiv(currentValue),
''
);
let html = `
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<title>展示 知乎 数据</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
}
h2 {
color: #333;
}
p {
line-height: 1.6;
}
.popularity {
color: #888;
}
</style>
</head>
<body>
${content}
</body>
</html>
`;
await pushPlusNotify('知乎热榜已更新', `${getcurrentDate()} 知乎热榜已更新` + html);
console.log('fetching zhihu hot list done!');
})();

29
zhihu.html Normal file
View File

@ -0,0 +1,29 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<title>展示 知乎 数据</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
}
h2 {
color: #333;
}
p {
line-height: 1.6;
}
.popularity {
color: #888;
}
</style>
</head>
<body>
<div>
<h2><a href="${item.link}">${item.shortTitle}</a></h2>
<p>热度:${item.popularity}</p>
<p class="popularity">${item.title}</p>
</div>
</body>
</html>

38
zhihu.json Normal file
View File

@ -0,0 +1,38 @@
{
"type": "hot_list_feed",
"style_type": "1",
"id": "0_1732544017.405669",
"card_id": "Q_5073499722",
"card_label": {
"type": "hot",
"icon": "https://pic2.zhimg.com/80/v2-266e83dbee46dce23b718e0531cb7d3a_1440w.png",
"night_icon": "https://pic3.zhimg.com/80/v2-c89199839c237b87e52f010bb5e7d773_1440w.png"
},
"feed_specific": {
"answer_count": 700
},
"target": {
"title_area": {
"text": "中信建投发布研报称「中国房价有望在 2026 年前后止跌回稳」,怎样看待这一预测?影响因素有哪些?"
},
"excerpt_area": {
"text": "11 月 23 日,中信建投发布研报认为,参考止跌回稳的国际经验,海外 5 国房价下行周期在 5-10 年左右,跌幅在 20%-40% 左右,参照此,中国房价有望在 2026 年前后止跌回稳。 就在本周五,广州宣布取消普通住宅和非普通住宅标准,至此,四大一线城市全部取消普通住房和非普通住房标准,购房费用少一大笔。 随着一系列明确促进房地产市场止跌回稳的利好政策陆续落地,房地产市场预期进一步改善。 中信建投: 房价有望在 2026 年前后止跌回稳 据官方数据10 月 70 个大中城市中,新建商品住宅销售价格环比上涨城市有 7 个,比上月增加 4 个。二手住宅环比上涨城市有 8 个,比上月增加 8 个。 11 月 23 日,中信建投研报认为,自 9 月底政治局会议提出要促进房地产市场止跌回稳后,中央和地方层面政策持续出台。 中央层面推出专项债收储、棚改货币化安置、房地产税收调整等政策地方层面则继续在限购、首付比例等方面作出优化。政策支持下10 月重点 40 城新房成交同比上升 5.0%13 城二手房成交同比上升 23.8%,市场景气度显著提升。 展望 2025 年,预计核心城市有望率先回稳,重要指标降幅收窄,销售面积、新开工面积、竣工面积、投资额分别下滑 8.3% 、 17.9% 、 7.7% 、 10.7%。地产开发业务仍在筑底中,「并购六条」政策红利驱动,建议关注向新质生产力转型的房企;同时防范通缩风险已成为当前政策的重要考量,推荐优质商业类地产公司。 参考止跌回稳的国际经验,中国房价或将在 2026 年前后企稳。 美国、日本、俄罗斯、西班牙、泰国采用宽松的货币及财政政策、接管风险主体、降低购房成本等方式推动房地产市场的止跌回稳。5 个国家房价下行周期持续时间在 5-10 年左右,周期内跌幅在 20%-40% 左右。中国房价已下跌 3 年、跌幅近 15%,参考国际经验,房价或将在 2026 年前后止跌回稳。利好政策陆续落地!中国房价有望在 2026 年前后止跌回稳"
},
"metrics_area": {
"text": "1059 万热度",
"font_color": "",
"background": "",
"weight": ""
},
"label_area": {
"type": "trend",
"trend": 0,
"night_color": "#B7302D",
"normal_color": "#F1403C"
},
"link": {
"url": "https://www.zhihu.com/question/5073499722"
}
},
"attached_info": "CkEIkqSUk/i18tkREAMaCTExMTk5MTM0MiDZ3o+6BjAAOKoLQAByCjUwNzM0OTk3MjJ4AKoBCWJpbGxib2FyZNIBAA=="
}

File diff suppressed because it is too large Load Diff