03.04 經典入門案例,Python通過Ip地址定位目標區域,附相應講解視頻

序言

在現如今的互聯網時代,我們越來越依賴網絡,甚至網絡已經融入了我們的日常生活,甚至沒有辦法想象如果沒有了網絡,會造成什麼樣的情景?。。。
在進行下面環節的時候我們需要先明白一個點:什麼是IP地址 ?
IP地址:IP地址分為局域網和廣域網兩種。它在全球範圍內實現了不同硬件結構、不同操作系統、不同網絡系統的互聯。在整個Internet中,每一個節點都依靠唯一的IP地址互相區分和相互聯繫。
有網絡的地方就一定有IP,因為IP地址的存在是構成現如今整個Internet的基礎;非常的重要,而且每一臺計算機只要連網了,都無權自行去設定屬於自己的IP地址,估計大家會有一個疑惑?那IP地址是怎麼來的呢?這會有一個統一的機構進行管理;在此我們先不過多去描述。

- 實戰

這裡我們分析的是專門做IP地址的一個大數據統計平臺。

分析網站結構,確定我們要抓取的數據內容


經典入門案例,Python通過Ip地址定位目標區域,附相應講解視頻

經過分析,該網站的結構非常的簡單,沒有什麼特別的,下面是我們需要抓取的內容;但在這裡我運用了圖形界面來做。


經典入門案例,Python通過Ip地址定位目標區域,附相應講解視頻

我們的需求是這樣的:

1、有一個可被用戶輸入ip地址的輸入框

2、一個可被用戶點擊確定要查詢的按鈕

3、一個可用來展示通過爬蟲抓取網站數據後的區域

<code>from tkinter import *

# 創建主窗口
root = Tk()
# 設置標題內容
root.title("邏輯-ip定位")
# 創建輸入框並設置尺寸
ip_input = Entry(root, width=40)
# 創建一個回顯列表
display_info = Listbox(root, width=60, height=10)
# 創建查詢按鈕
result_button = Button(root, text=" 查 詢 ")

if __name__ == '__main__':
# 完成佈局 顯示
ip_input.pack()
display_info.pack()
result_button.pack()
# 循環
root.mainloop()

/<code>

運行之後是一個非常簡單的界面;關於裡面的一些屬性應用 ,也都是非常簡單的,這裡就不過多描述了

我這裡有跟本章節配套的視頻,如果有需要的可以私信我!


經典入門案例,Python通過Ip地址定位目標區域,附相應講解視頻

接下來,我們通過爬蟲抓取數據並跟上述界面融合在一起;

第一步:獲取數據

如果大家覺得閱讀有困難,包括headers我是一鍵生成的;可以參考我前2篇文章,有很詳細的介紹,這裡就一概而過了。

<code>import requests

# 查詢函數, 接收用戶輸入的ip地址
def get_find_position():
# 偽裝
headers = {
'Connection': 'keep-alive',
'Cache-Control': 'max-age=0',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
'Referer': 'https://www.ipip.net/ip.html',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9',
}
# 發送請求並獲取返回數據
response = requests.get('https://www.ipip.net/ip/175.0.59.43.html', headers=headers).text

print(response)

/<code>

第二步: 運用re正則表達式 ;解析數據內容

正則表達式是非常靈活的一種解析方式,這裡運用了簡單粗暴的通配符方案(.*?) 。

<code>import re

# 正則表達式
address = re.search(r'地理位置.*?;">(.*?)', response, re.S)
operator = re.search(r'運營商.*?;">(.*?)', response, re.S)
time = re.search(r'時區.*?;">(.*?)', response, re.S)
wrap = re.search(r'地區中心經緯度.*?;">(.*?)', response, re.S)
/<code>

第三步:將解析內容在界面中進行展示

這裡運用了回傳,將解析的內容回傳至窗口列表中進行展示

<code># 判斷是否匹配成功
if address:
# 匹配成功則一定有ip和地理位置信息
ip_info_list = ['地理位置: ' + address.group(1), '當前IP: ' + ip]
# 分別判斷其他信息匹配結果, 成功則加入臨時列表
if operator:
ip_info_list.insert(0, '所有者/運營商: ' + operator.group(1))
if time:
ip_info_list.insert(0, '時區: ' + time.group(1))
if wrap:
ip_info_list.insert(0, '地區中心經緯度: ' + wrap.group(1))

# 清空之前的回顯列表
display_info.delete(0, 5)
else:
display_info.insert(0, "無效的ip!")

/<code>

在圖形界面中Button組件有一個屬性為command,這個屬性可以綁定一個事件,當我們點擊這個組件的時候,會執行綁定的事件,而這個是事件就是我們的爬蟲。

<code>


經典入門案例,Python通過Ip地址定位目標區域,附相應講解視頻


經典入門案例,Python通過Ip地址定位目標區域,附相應講解視頻

這個項目是有相應的講解視頻的哦,如果需要這個項目案例的講解的視頻可以轉發此文後,私信我:IP地址,即可免費領取哦!

最後,希望這個項目能讓你掌握的Python知識開始能應用於實踐哦!


分享到:


相關文章: