Skip to content

Commit d10b63b

Browse files
committed
add news.json
1 parent b9a4f13 commit d10b63b

2 files changed

Lines changed: 25 additions & 2 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
config.json
22
emails.json
3+
news.json
34
news_scraper.log
45
*.html

news_scraper.py

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -614,6 +614,25 @@ def check_proxy(self):
614614
logging.error(f"代理连接测试失败: {e}")
615615
return False
616616

617+
def save_news_to_json(self, news_items, filename='news.json'):
618+
"""将新闻保存到JSON文件"""
619+
try:
620+
# 将日期对象转换为字符串,以便JSON序列化
621+
serializable_news = []
622+
for item in news_items:
623+
news_item = item.copy()
624+
if isinstance(news_item['date'], datetime.date):
625+
news_item['date'] = news_item['date'].strftime('%Y-%m-%d')
626+
serializable_news.append(news_item)
627+
628+
with open(filename, 'w', encoding='utf-8') as f:
629+
json.dump(serializable_news, f, ensure_ascii=False, indent=4)
630+
logging.info(f"成功保存 {len(news_items)} 条新闻到 {filename}")
631+
return True
632+
except Exception as e:
633+
logging.error(f"保存新闻到JSON文件失败: {e}")
634+
return False
635+
617636
def run(self):
618637
"""运行主程序"""
619638
logging.info("开始抓取华东理工大学新闻...")
@@ -665,14 +684,17 @@ def run(self):
665684

666685
# 筛选今日新闻
667686
recent_news = self.filter_recent_news(all_news_items)
668-
logging.info(f"筛选出今日新闻 {len(recent_news)} 条")
687+
logging.info(f"筛选出最近 {self.config['days']} 天内的新闻 {len(recent_news)} 条")
688+
689+
# 保存新闻到JSON文件
690+
self.save_news_to_json(recent_news)
669691

670692
# 只有在有新通知时才发送邮件
671693
if recent_news and self.emails:
672694
# 直接传递新闻列表,在send_email中根据用户订阅分类进行筛选
673695
self.send_email("", len(recent_news), recent_news)
674696
elif not recent_news:
675-
logging.info("今日暂无新通知,不发送邮件")
697+
logging.info("最近无新通知,不发送邮件")
676698
else:
677699
logging.warning("没有配置收件人邮箱")
678700

0 commit comments

Comments
 (0)