feat: 军事科技每日资讯推送系统 - Docker部署 + 日志系统 + 数据目录重组
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
"""内容处理模块 - HTML转Markdown"""
|
||||
|
||||
import re
|
||||
from urllib.parse import urljoin
|
||||
|
||||
from markdownify import markdownify as md
|
||||
|
||||
|
||||
def html_to_markdown(html: str, base_url: str = "") -> str:
|
||||
"""
|
||||
将HTML转换为Markdown,保留链接和图片
|
||||
使用markdownify库,并进行后处理优化
|
||||
"""
|
||||
# markdownify会自动处理<img>为,<a>为[text](url)
|
||||
markdown = md(html, heading_style="ATX")
|
||||
|
||||
# 处理相对链接
|
||||
if base_url:
|
||||
|
||||
def replace_rel_link(m):
|
||||
prefix, path, suffix = m.groups()
|
||||
if path.startswith(("http://", "https://", "data:")):
|
||||
return m.group(0)
|
||||
abs_url = urljoin(base_url, path)
|
||||
return f"{prefix}{abs_url}{suffix}"
|
||||
|
||||
markdown = re.sub(r"(!?\[.*?\]\()(.*?)(\))", replace_rel_link, markdown)
|
||||
|
||||
# 后处理优化
|
||||
# 1. 直接匹配移除 xgo.ing 推广链接
|
||||
markdown = markdown.replace("[⚡ Powered by xgo.ing](https://xgo.ing)", "")
|
||||
markdown = markdown.replace("[⚡ Powered by xgo.ing](https://xgo.ing/)", "")
|
||||
|
||||
# 2. 清理多余空行
|
||||
markdown = re.sub(r"\n{3,}", "\n\n", markdown)
|
||||
|
||||
return markdown.strip()
|
||||
Reference in New Issue
Block a user