Python爬虫制作IP地址查询界面
tt
引言:核心技术概念与原理
在开始构建 IP 地址查询工具之前,让我们先了解几个核心概念,这将帮助您更好地理解后续的代码实现。
1. IP 地址(Internet Protocol Address)
IP 地址是互联网上每个设备的唯一标识符,类似于现实世界中的门牌号。它允许设备在网络中相互识别和通信。IP 地址分为 IPv4(如 192.168.1.1)和 IPv6 两种格式。通过查询 IP 地址,我们可以获取该地址对应的地理位置、网络服务提供商(ISP)等公开信息。
2. 网络爬虫(Web Crawler/Spider)
网络爬虫是一种自动从互联网上收集信息的程序。它通过发送 HTTP 请求到目标网站,获取网页 HTML 内容,然后解析并提取所需数据。在本项目中,我们将使用爬虫技术从 IP 查询网站(如 ipchaxun.com)获取 IP 地址的详细信息。
3. GUI 界面(Graphical User Interface)
GUI 界面为用户提供了图形化的操作方式,比命令行更直观友好。本项目使用 Python 的 Tkinter 库构建一个简单的窗口应用程序,包含输入框、按钮和结果显示区域,让用户可以通过点击按钮完成 IP 查询操作。
4. 基本原理流程
本工具的工作原理可以概括为以下步骤:
- 用户在 GUI 界面中输入要查询的 IP 地址
- 程序通过爬虫技术向 IP 查询网站发送请求
- 获取网站返回的 HTML 响应并解析数据
- 提取 IP 地址的详细信息(地理位置、ISP 等)
- 在 GUI 界面中展示查询结果
接下来,我们将从环境准备开始,一步步实现这个 IP 地址查询工具。
1. Python 库安装
1.1 安装 easygui
pip install easygui1.2 安装 requests 和 bs4
pip install requests bs42. 导入所需的库
from tkinter import * from tkinter.messagebox import showerror import easygui import requests from bs4 import BeautifulSoup3. 界面构建
源代码如下:
def ip_address_search(): root = Tk() root.geometry('320x320') root.title("IP Address Search") root.configure(bg='#0f4c81') font = ('微软雅黑', 100) Label(root, text='IP Search', bg='#0f4c81', fg='#00FFFF').pack(side='top') root.attributes("-toolwindow", 1) # 无最大化,最小化 ip_en = Entry(root, width=30) ip_en.pack(side='top')4. 爬虫 IP 查询网站数据
注:该函数放置在 Step 3 中的函数之下!
爬虫数据的网站:IP 地址查询网站
爬虫源码:
def ip_search(): '''爬取 IP 查询网站数据的函数''' try: ip = ip_en.get() ip = ip.strip() print(ip) url = f'https://ipchaxun.com/{ip}/' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36' } response = requests.get(url=url, headers=headers).text soup = BeautifulSoup(response, 'html.parser') info = soup.find('div', class_='info').text except: showerror('error', '您的输入有问题,请重新输入!') else: easygui.msgbox(title=f'{ip}', msg=f'{info}')5. 构建查询按钮并与爬虫函数关联
注:该代码放置在 Step 3 中的函数之下!
源码:
Button(root, bg='black', fg='#0F0', command=ip_search, text='Search').pack(side='top', pady=10) root.mainloop()6. 运行函数
ip_address_search()7. 完整源码
from tkinter import * from tkinter.messagebox import showerror import easygui import requests from bs4 import BeautifulSoup def ip_address_search(): root = Tk() root.geometry('320x320') root.title("IP Address Search") root.configure(bg='#0f4c81') font = ('微软雅黑', 100) Label(root, text='IP Search', bg='#0f4c81', fg='#00FFFF').pack(side='top') root.attributes("-toolwindow", 1) # 无最大化,最小化 ip_en = Entry(root, width=30) ip_en.pack(side='top') def ip_search(): '''爬取 IP 查询网站数据的函数''' try: ip = ip_en.get() ip = ip.strip() print(ip) url = f'https://ipchaxun.com/{ip}/' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36' } response = requests.get(url=url, headers=headers).text soup = BeautifulSoup(response, 'html.parser') info = soup.find('div', class_='info').text except: showerror('error', '您的输入有问题,请重新输入!') else: easygui.msgbox(title=f'{ip}', msg=f'{info}') Button(root, bg='black', fg='#0F0', command=ip_search, text='Search').pack(side='top', pady=10) root.mainloop() ip_address_search()