在网络安全、数据分析或运营场景中,经常需要对海量 IP 地址进行地理位置归类和可视化展示。结合 Python 强大的数据处理能力与 PyCharm 的图形化开发环境,可以高效地完成这类任务,并通过 Git 管理整个开发过程中的版本变更。
本文将围绕以下几个方面展开:
- 使用 Python 脚本进行 IP 地址地理位置查询
- 生成城市分布统计和地理热力图
- 实现脚本断点续跑功能
- 利用 Git 进行本地版本控制
- 结合 PyCharm 图形化操作提升开发效率
一、任务目标概览
该项目旨在处理一个包含约 1.5 万个 IP 地址的文件,目标是:
- 查询每个 IP 的地理位置(国家、省份、城市、经纬度)
- 将地理分布信息存储到 CSV 文件中
- 统计城市密度并输出排行
- 将所有 IP 位置在地图上以热力图形式展示
- 脚本具有中断恢复能力,避免重复请求
二、核心技术栈
- Python 3.11
- PyCharm:作为主要 IDE,提供强大的可视化开发支持
- folium:用于地图绘制
- requests:发起 API 请求
- tqdm:添加进度条
- pandas:数据存储与处理
- Git:版本控制与代码备份
三、项目结构与脚本实现
项目结构建议如下:
GeoIPExplorer/
├── input/
│ └── ip_list.txt # IP 地址列表
├── output/
│ ├── ip_geolocation.csv # 查询结果
│ ├── city_counts.csv # 城市统计
│ ├── ip_heatmap.html # 热力图
│ └── visited_ips.txt # 已查询 IP 记录(断点续跑用)
├── ip_geolocation_analysis.py # 主脚本
└── .gitignore
核心脚本功能(简略展示)
visited_file = "output/visited_ips.txt"
# 读取已查询 IP
def read_visited_ips():
try:
with open(visited_file, "r") as f:
return set(f.read().splitlines())
except FileNotFoundError:
return set()
# 保存已查询 IP
def save_visited_ip(ip):
with open(visited_file, "a") as f:
f.write(ip + "\n")
# 主查询循环
for ip in tqdm(ip_list, desc="查询地理位置"):
if ip in visited_ips:
continue
location = get_ip_location(ip)
if location:
results.append(location)
save_visited_ip(ip)
time.sleep(1.5) # 每分钟最多 40 次请求
此结构确保即使脚本中途终止,下次运行也能从上次位置继续。
四、热力图可视化效果
使用 folium 和 HeatMap 插件可生成交互式地图:
heat_data = [[row["lat"], row["lon"]] for _, row in df.iterrows()]
HeatMap(heat_data).add_to(m)
m.save("output/ip_heatmap.html")
生成的 HTML 文件可直接在浏览器中打开,直观查看全球 IP 的分布密度。
五、使用 Git 管理版本
通过 Git 对脚本进行版本控制,可以实现:
- 每次功能更新、改动都被记录
- 回溯任意历史版本
- 结合 PyCharm 的图形化 Git 工具,操作更便捷
基本操作流程:
git init # 初始化仓库
git add ip_geolocation_analysis.py # 添加目标文件
git commit -m "初始提交" # 创建备份
git log # 查看历史版本
git checkout <commit_id> # 回退到某个版本
.gitignore 中建议加入:
.idea/
output/visited_ips.txt
避免将临时文件或 IDE 配置文件纳入版本控制。
六、PyCharm 提升开发效率的优势
与纯命令行相比,PyCharm 提供的图形化界面在以下方面显著提升了效率:
- 智能代码补全与语法检查
- 可视化调试、断点管理
- 图形化 Git 提交与分支管理
- 交互式终端与 Jupyter 支持
- 项目结构一目了然
结合 PyCharm 的终端,可以在同一窗口内运行脚本、查看输出、使用 Git 命令,进一步提升效率。
七、结语
通过 Python + PyCharm 的组合,不仅可以快速完成批量 IP 的地理查询和可视化工作,还能通过 Git 保证开发过程的可追溯性和可恢复性。结合断点续跑机制,更适合应对大数据量的长时间任务。
对于开发者而言,这是一套值得复用的 IP 分析流程,也是一种实用的工作模式:可视化开发为主,命令行辅助,版本控制保障回溯。