项目前景
- 最近在接触到drissionpage 这个包,特别好用,试用监听数据包功能。
- 自学js逆向,把图灵的大纲下载为本地md文件方便查看。
思路
- 获取思维导图数据的原始格式,json格式。
- 解析json
代码
from DrissionPage import ChromiumPage
import json
def parse_mindmap_to_md(data, level=0, is_root=True):
"""
递归解析思维导图数据为 Markdown 格式。
支持分类出标题和文件名称。
父节点的 note 属性作为文本信息附加到标题下。
"""
md = ""
if is_root:
md += f"# {data['title']}\n\n"
else:
if not data.get("children"):
md += f"{data['title']}\n\n"
else:
indent = "#" * level
md += f"{indent} {data['title']}\n\n"
if "note" in data:
md += f"> {data['note'].strip()}\n\n"
for child in data.get("children", []):
md += parse_mindmap_to_md(child, level + 1, is_root=False)
return md
def convert_mindmap_json_to_md(json_data):
"""
将思维导图 JSON 数据解析为 Markdown 格式。
"""
data = json.loads(json_data)
if not isinstance(data, dict) or not data.get("root"):
raise ValueError("Invalid mindmap data: Root element is missing.")
md_content = parse_mindmap_to_md(data)
return md_content
def get_json(url):
cp = ChromiumPage()
cp.listen.start('/api/personal/view/link/def')
cp.get(url)
title = cp.title
data = next(cp.listen.steps()).response.body
cp.close()
return title, data['data']['def']
if __name__ == '__main__':
url = 'https://www.processon.com/view/link/65658d2f1f333817f6ebb98e'
output_path = './'
title, json_data = get_json(url)
title = title.split('|')[0]
print(title,type(json_data))
md_result = convert_mindmap_json_to_md(json_data)
with open(f"{output_path}{title}.md", "w", encoding="utf-8") as f:
f.write(md_result)
多多指导,谢谢各位