在网络安全、数据分析或运营场景中,经常需要对海量 IP 地址进行地理位置归类和可视化展示。结合 Python 强大的数据处理能力与 PyCharm 的图形化开发环境,可以高效地完成这类任务,并通过 Git 管理整个开发过程中的版本变更。

本文将围绕以下几个方面展开:

  • 使用 Python 脚本进行 IP 地址地理位置查询
  • 生成城市分布统计和地理热力图
  • 实现脚本断点续跑功能
  • 利用 Git 进行本地版本控制
  • 结合 PyCharm 图形化操作提升开发效率

一、任务目标概览

该项目旨在处理一个包含约 1.5 万个 IP 地址的文件,目标是:

  1. 查询每个 IP 的地理位置(国家、省份、城市、经纬度)
  2. 将地理分布信息存储到 CSV 文件中
  3. 统计城市密度并输出排行
  4. 将所有 IP 位置在地图上以热力图形式展示
  5. 脚本具有中断恢复能力,避免重复请求

二、核心技术栈

  • 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 次请求

此结构确保即使脚本中途终止,下次运行也能从上次位置继续。


四、热力图可视化效果

使用 foliumHeatMap 插件可生成交互式地图:

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 分析流程,也是一种实用的工作模式:可视化开发为主,命令行辅助,版本控制保障回溯

Leave a Reply

Your email address will not be published. Required fields are marked *