首先附上一張成品圖

可以看到,當(dāng)我們輸入了一個(gè)ip地址以后,界面中可以馬上將該ip地址的地理位置、運(yùn)營商、時(shí)區(qū)、經(jīng)緯度信息清楚的顯示出來。是不是已經(jīng)摩拳擦掌了呢???????
1.準(zhǔn)備工作
在敲代碼之前,我們需要確定電腦上已經(jīng)安裝Python。安裝Python傳送門
還需要用到Pycharm。最新超詳細(xì)PyCharm安裝激活教程
以及爬蟲最常用的模塊-----requests模塊、GUI模塊-----tkinter模塊、正則模塊-----re模塊。如何在PyCharm中安裝需要的第三方模塊
以上都準(zhǔn)備好,我們就可以開始愉快的敲鍵盤了。??????
2.代碼
首先,我們將需要的模塊導(dǎo)入。
from tkinter import *
import requests
import re
然后爬取網(wǎng)站信息,這里我們爬取了“www.ipip.net”網(wǎng)站的信息。(因?yàn)榫W(wǎng)站有反爬取機(jī)制,所以我們首先需要偽裝成瀏覽器,然后再去訪問。headers里面的內(nèi)容需要到瀏覽器中打開網(wǎng)址,然后點(diǎn)擊F12,在網(wǎng)絡(luò)選項(xiàng)中尋找)
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'運(yùn)營商.*?;">(.*?)</span>', html, re.S)
time= re.search(r'時(shí)區(qū).*?;">(.*?)</span>', html, re.S)
warp= re.search(r'地區(qū)中心經(jīng)緯度.*?;">(.*?)</span>', html, re.S)
if address:
? ? ? ? ip_info= ['地理位置: ' + address.group(1), '當(dāng)前IP: ' + ip]
if operator:
? ? ? ? ? ? ip_info.insert(0, '運(yùn)營商: ' + operator.group(1))
if time:
? ? ? ? ? ? ip_info.insert(0, '時(shí)區(qū): ' + time.group(1))
if warp:
? ? ? ? ? ? ip_info.insert(0, '地區(qū)中心經(jīng)緯度: ' + 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, "當(dāng)前輸入IP無效")
然后創(chuàng)建窗口,并把標(biāo)題、輸入框、回顯列表以及確認(rèn)按鈕添加進(jìn)去。
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 = '確認(rèn)')
ip_input.pack()
display_info.pack()
result_btn.pack()
設(shè)置程序入口,并運(yùn)行窗口
if __name__== '__main__':
??? tk.mainloop()
3.大功告成,數(shù)一下的確是37行代碼哦??,趕快運(yùn)行試試吧。(需要源代碼私信我哦)
