揭开世界谜团
发布时间:06/21 10:37:24
揭开世界谜团:公开解密档案爬取与关联分析零门槛实操指南
合规声明:本教程仅针对全球官方机构公开的非涉密解密档案,所有操作需遵守所在地区网络安全法规,禁止用于非法用途。
前置准备:工具安装与环境配置
1. Python基础环境安装
直接下载3.10.11稳定版安装包:https://www.python.org/downloads/release/python-31011/
安装时必须勾选底部「Add Python 3.10 to PATH」选项,安装完成后打开cmd/终端执行以下命令验证:
``` python --version pip --version ```返回对应版本号即安装成功。
2. 依赖库一键安装
cmd/终端执行以下命令,所有依赖一次性安装完成:
``` pip install requests beautifulsoup4 pandas networkx matplotlib openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple ```第一步:官方解密档案爬取实操
本次使用合法公开数据源:美国国家档案与记录管理局(NARA)公开解密档案API,无需注册即可调用。
重点注意:每次请求间隔固定为2秒,避免触发站点反爬规则导致IP封禁
新建文件crawl.py,复制以下完整代码直接运行即可:
``` import requests import time import pandas as pd 请求头配置,直接复制即可使用 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" } 存储爬取结果的列表 result_list = [] 爬取前10页解密档案,可自行修改page参数调整爬取数量 for page in range(1, 11): url = f"https://catalog.archives.gov/api/v1/search?query=declassified&rows=100&page={page}" response = requests.get(url, headers=headers) if response.status_code == 200: data = response.json() for item in data.get("opaResponse", {}).get("results", {}).get("result", []): result_list.append({ "档案ID": item.get("naId", ""), "档案标题": item.get("title", ""), "解密时间": item.get("declassifiedDate", ""), "涉及机构": item.get("organization", ""), "档案摘要": item.get("scopeContent", {}).get("description", "") }) 强制延时2秒 time.sleep(2) print(f"第{page}页爬取完成") 保存为csv文件 df = pd.DataFrame(result_list) df.to_csv("解密档案原始数据.csv", index=False, encoding="utf-8-sig") print("爬取完成,数据已保存到解密档案原始数据.csv") ```第二步:档案数据结构化清洗
新建文件clean.py,复制以下代码运行,可自动完成去重、空值处理、目标关键词匹配:
``` import pandas as pd import re 读取原始数据 df = pd.read_csv("解密档案原始数据.csv", encoding="utf-8-sig") 1. 去重:按档案ID删除重复条目 df = df.drop_duplicates(subset="档案ID", keep="first") 2. 空值处理:空内容替换为「未公开」 df = df.fillna("未公开") 3. 提取核心关键词:可自行修改keyword_list,匹配你想调查的谜团相关内容 keyword_list = ["UFO", "肯尼迪", "冷战", "水门事件", "外星生命", "古巴导弹危机"] def match_keyword(content): match_list = [k for k in keyword_list if k in str(content)] return ",".join(match_list) if match_list else "无匹配" df["匹配关键词"] = df["档案摘要"].apply(match_keyword) 筛选出有关键词匹配的条目 df_target = df[df["匹配关键词"] != "无匹配"] 保存清洗后的数据 df_target.to_csv("清洗后目标档案.csv", index=False, encoding="utf-8-sig") print(f"清洗完成,共筛选出{len(df_target)}条相关档案") ```第三步:谜团关联关系分析
新建文件analysis.py,复制以下代码运行,可自动生成人物、事件、机构的关联图谱,快速定位隐藏线索:
``` import pandas as pd import networkx as nx import matplotlib.pyplot as plt 解决中文显示问题 plt.rcParams['font.sans-serif'] = ['SimHei', 'PingFang SC'] plt.rcParams['axes.unicode_minus'] = False 读取清洗后的数据 df = pd.read_csv("清洗后目标档案.csv", encoding="utf-8-sig") G = nx.Graph() 构建关联关系:关键词 -> 涉及机构 -> 档案标题 for _, row in df.iterrows(): keywords = row["匹配关键词"].split(",") org = row["涉及机构"] for kw in keywords: G.add_edge(kw, org, weight=1) G.add_edge(org, row["档案标题"], weight=1) 重点筛选:仅保留出现次数≥3的节点,过滤无效信息 filtered_nodes = [n for n, d in G.degree() if d >=3] G_filtered = G.subgraph(filtered_nodes) 生成可视化关联图 plt.figure(figsize=(15, 15)) pos = nx.spring_layout(G_filtered, k=0.5) nx.draw(G_filtered, pos, with_labels=True, node_color='lightblue', node_size=2000, font_size=10) plt.savefig("谜团关联图谱.png", dpi=300, bbox_inches='tight') 导出关联关系表 edge_df = nx.to_pandas_edgelist(G_filtered) edge_df.to_csv("关联关系表.csv", index=False, encoding="utf-8-sig") print("分析完成,关联图谱和关系表已保存") ```常见卡壳问题解决方案
- 爬取返回403错误:打开浏览器按F12进入「网络」面板,刷新任意页面,复制请求头中的User-Agent值,替换crawl.py中headers里的User-Agent即可
- 关联图谱中文乱码:Windows系统确保安装了黑体字体,Mac系统将font.sans-serif配置修改为['PingFang SC']即可
- 数据保存失败:检查是否有同名csv/png文件处于打开状态,关闭文件后重新运行代码即可
- 匹配结果为空:修改clean.py中的keyword_list,添加你要查询的谜团相关关键词即可
版权保护: 本文由 741卡盟 原创,转载请保留链接: http://741ka.com/gamenews/20064.html
- 上一篇:全民奇迹怎么退出游戏
- 下一篇:王者荣耀s28宫本武藏霸王丸台词有哪些
