37行代码实现爬取ip地址并显示到GUI上
首先附上一张成品图
ip地址查询可以看到,当我们输入了一个ip地址以后,界面中可以马上将该ip地址的地理位置、运营商、时区、经纬度信息清楚的显示出来。是不是已经摩拳擦掌了呢?😁😁😁
1.准备工作
在敲代码之前,我们需要确定电脑上已经安装Python。安装Python传送门
还需要用到Pycharm。最新超详细PyCharm安装激活教程
以及爬虫最常用的模块-----requests模块、GUI模块-----tkinter模块、正则模块-----re模块。如何在PyCharm中安装需要的第三方模块
以上都准备好,我们就可以开始愉快的敲键盘了。🤣🤣🤣
2.代码
首先,我们将需要的模块导入。
from tkinter import *
import requests
import re
然后爬取网站信息,这里我们爬取了“www.ipip.net”网站的信息。(因为网站有反爬取机制,所以我们首先需要伪装成浏览器,然后再去访问。headers里面的内容需要到浏览器中打开网址,然后点击F12,在网络选项中寻找)
def get_requests():
ip= ip_input.get()
headers= {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0"
}
html= requests.get("https://www.ipip.net/ip/{}.html".format(ip), headers = headers).text
address= re.search(r'地理位置.*?;">(.*?)</span>', html, re.S)
operator= re.search(r'运营商.*?;">(.*?)</span>', html, re.S)
time= re.search(r'时区.*?;">(.*?)</span>', html, re.S)
warp= re.search(r'地区中心经纬度.*?;">(.*?)</span>', html, re.S)
if address:
ip_info= ['地理位置: ' + address.group(1), '当前IP: ' + ip]
if operator:
ip_info.insert(0, '运营商: ' + operator.group(1))
if time:
ip_info.insert(0, '时区: ' + time.group(1))
if warp:
ip_info.insert(0, '地区中心经纬度: ' + warp.group(1))
display_info.delete(0, 5)
for itemin ip_info:
display_info.insert(0, item)
else:
display_info.delete(0, 5)
display_info.insert(0, "当前输入IP无效")
然后创建窗口,并把标题、输入框、回显列表以及确认按钮添加进去。
tk= Tk()
tk.title("ip地址查询")
ip_input= Entry(tk, width = 40)
display_info= Listbox(tk, width = 50, height = 10)
result_btn= Button(tk, command = get_requests, text = '确认')
ip_input.pack()
display_info.pack()
result_btn.pack()
设置程序入口,并运行窗口
if __name__== '__main__':
tk.mainloop()