Python 提供了多个图形开发界面的库,包括Tkinter,wxPython。Jython,其他两个不说,今天用到的是Tkinter。
Tkinter 是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。
创建一个GUI程序也很简单,只需要四布
1、导入 Tkinter 模块
2、创建控件
3、指定这个控件的 master, 即这个控件属于哪一个
4、告诉 GM(geometry manager) 有一个控件产生了。
写一段测试代码如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import Tkinter
top = Tkinter.Tk()
# 进入消息循环
top.mainloop()
原理是通过网站ipipnet (https://www.ipip.net)可以查询ip信息,再通过爬虫爬取需要的信息,显示在GUI中
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2018/12/20 20:44
# @Author : Fang
# @E-mail : [email protected]
# @Site :
# @File : thinter_study.py
# @Software: PyCharm
from tkinter import *
import requests,re
# 对付“反盗链”
# from fake_useragent import UserAgent
# import random
# ua = UserAgent()
# headers = {'User-Agent':ua.random}
# print(headers)
def get_content():
#获得 输入框中的信息
ip=ip_input.get()
#模拟浏览器请求网络
# headers={'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0'}
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}
#请求网络
response = requests.get("https://www.ipip.net/ip/{}.html".format(ip),headers=headers)
# print(response.text)
# print(response.content)
address = re.search(r'地理位置.*?;">(.*?)',response.text,re.S)
operator = re.search(r'运营商.*?;">(.*?)', response.text, re.S)
time_zone = re.search(r'时区.*?;">(.*?)', response.text, re.S)
wrap = re.search(r'地区.*?;">(.*?)', response.text, re.S)
if address:
ip_info=['地理位置:'+address.group(1),'当前的ip:'+ip]
if operator:
ip_info.insert(0,'拥有者/运营商:'+operator.group(1))
if time_zone:
ip_info.insert(0, '时区:' + time_zone.group(1))
if wrap:
ip_info.insert(0, '地区中心经纬度:' + wrap.group(1))
display_info.delete(0,5)
for item in ip_info:
display_info.insert(0,item)
else:
display_info.delete(0,5)
display_info.insert(0,"无效ip")
#创建一个窗口
root=Tk()
#标题
root.title("Fang的ip定位查询工具")
#设置输入框 规定尺寸
ip_input=Entry(root,width=40)
#创建一个回显列表
display_info=Listbox(root,width=60,height=10)
#创建查询按钮
result_button=Button(root,command=get_content,text="查询")
def main():
#显示界面
ip_input.pack()
display_info.pack()
result_button.pack()
#运行
root.mainloop()
#程序入口
if __name__ == '__main__':
main()
关于对付反盗链headers如何获取,请移步我的另一篇博客,传送门:Python爬虫之headers和data的获取
接下来运行一下