- 資訊首頁(yè) > 網(wǎng)絡(luò )安全 >
- python3怎么實(shí)現簡(jiǎn)單的ip提取功能
這篇文章主要講解了“python3怎么實(shí)現簡(jiǎn)單的ip提取功能”,文中的講解內容簡(jiǎn)單清晰,易于學(xué)習與理解,下面請大家跟著(zhù)小編的思路慢慢深入,一起來(lái)研究和學(xué)習“python3怎么實(shí)現簡(jiǎn)單的ip提取功能”吧!
準備環(huán)境python3,win10系統,當然linux更好,win下需要安裝reuqests模塊(調用第三方接口進(jìn)行ip歸屬地查詢(xún)需要發(fā)起請求)
\Users\\Desktop>pip install requests Collecting requests Downloading requests-.-py2.py3-none-any.whl (kB) % kB kB/s Collecting chardet<.,>=. (from requests) Downloading chardet-.-py2.py3-none-any.whl (kB) % kB kB/s Collecting idna<,>= (from requests) Downloading idna--py2.py3-none-any.whl (kB) % kB MB/s Collecting urllib3<,>=. (from requests) Downloading urllib3--py2.py3-none-any.whl (kB) % kB kB/s Collecting certifi>=. (from requests) Downloading certifi-.-py2.py3-none-any.whl (kB) % kB MB/s Installing collected chardet, idna, urllib3, certifi, requests Successfully installed certifi-. chardet-. idna- requests-. urllib3-
我這里調用阿里的第三方接口進(jìn)行IP歸屬地查詢(xún),接口地址http://ip.taobao.com/instructions.php
1. 請求接口(GET): /service/getIpInfo.php?ip=[ip地址字串] 2. 響應信息: (json格式的)國家 、?。ㄗ灾螀^或直轄市)、市(縣)、運營(yíng)商 3. 返回數據格式: {:0,:{:,:,:, :,:,:,:, :,:,:,:, :,:}} 其中code的值的含義為,0:成功,1:失敗。
這里大概介紹一下思路,讀取文件,定義函數,進(jìn)行循環(huán),發(fā)起請求,接收參數,判斷,篩選并寫(xiě)入文件,完成。
運行python文件先寫(xiě)頭文件格式,告訴系統運行python3的代碼,并且以utf-8編碼
#!usr/bin/python3
#-*-coding:utf-8-*-
requests
requests requests URL = + ip r = requests.get(,timeout=) print() ip = checkip(ip)
運行代碼結果如下,初步判斷代碼應該沒(méi)問(wèn)題
C:\Users\92039\Desktop>python 2.py
test
requests URL = + ip r = requests.get(,timeout=) print() ip = checkip(ip)
requests URL = + ip r = requests.get(,timeout=) json_data = r.json() region = json_data[][] print() ip = checkip(ip)
region = json_data[u'data'][u'region']
此處代碼是按照接口返回的json的格式來(lái)寫(xiě)的
requests URL = + ip r = requests.get(,timeout=) json_data = r.json() region = json_data[][] print(region) ip = checkip(ip)
C:\Users\92039\Desktop>python 2.py
山西省
測試成功
即便Python程序的語(yǔ)法是正確的,在運行它的時(shí)候,也有可能發(fā)生錯誤。運行期檢測到的錯誤被稱(chēng)為異常。大多數的異常都不會(huì )被程序處理,而是以錯誤形式展現
這時(shí)候就要進(jìn)行異常處理
引入try/except
: x = / ZeroDivisionError err: print(, err) yichang()C:\Users\92039\Desktop>python 5.py
異常: division by zero如果未做異常處理將直接報錯,導致程序無(wú)法繼續執行部
requests : URL = + ip r = requests.get(URL,timeout=) json_data = r.json() region = json_data[][] print(region) : ip = checkip(ip)
C:\Users\92039\Desktop>python 2.py
山西省
接下來(lái)加入if判斷
requests : URL = + ip r = requests.get(URL,timeout=) json_data = r.json() region = json_data[][] region == : : : ip = checkip(ip)
然后需要加入打開(kāi)文件部分的代碼
當做文件處理時(shí),需要獲取一個(gè)文件句柄,從文件中讀取數據,然后關(guān)閉文件句柄。
file = open() data = file.read() file.close()這里有兩個(gè)問(wèn)題。一是可能忘記關(guān)閉文件句柄;二是文件讀取數據發(fā)生異常,沒(méi)有進(jìn)行任何處理
然而with可以很好的處理上下文環(huán)境產(chǎn)生的異常
= f.read()
open() f: ips = f.read().split() ip ips: print(ip)
ips.txt中寫(xiě)入了3個(gè)ip
222.31.41.253 #山西省 202.12.15.52 #日本 61.135.169.12 #北京
運行結果
C:\Users\92039\Desktop>python 3.py
222.31.41.253
202.12.15.52
61.135.169.121將該模塊加入到代碼中
requests : URL = + ip r = requests.get(URL,timeout=) json_data = r.json() region = json_data[][] region == : print(ip) : : open() f: ips = f.read().split() ip ips: print(ip) checkip(ip)
C:\Users\92039\Desktop>python 2.py
222.31.41.253
222.31.41.253
202.12.15.52
61.135.169.121因為有兩次輸出,屬于山西省的ip會(huì )打印兩次,由運行結果可知只有第一個(gè)ip屬于山西省
接下來(lái)要加入寫(xiě)入文件的模塊,將屬于山西省的ip全部寫(xiě)入一個(gè)文件
open(,) fw: i range(): fw.write()
原有數據 1 2 3 4
運行腳本后
1
2
3
4
a
a
a
a
a補充一下文件操作的知識
文件打開(kāi)模式"+" 表示可以同時(shí)讀寫(xiě)某個(gè)文件
r ,只讀模式【默認模式,文件必須存在,不存在則拋出異?!?/p>
w,只寫(xiě)模式【不可讀;不存在則創(chuàng )建;存在則清空內容】
x, 只寫(xiě)模式【不可讀;不存在則創(chuàng )建,存在則報錯】
a, 追加模式【可讀; 不存在則創(chuàng )建;存在則只追加內容】,文件指針自動(dòng)移到文件尾。
"b"表示以字節的方式操作,以二進(jìn)制模式打開(kāi)文件,而不是以文本模式。
r+, 讀寫(xiě)【可讀,可寫(xiě)】
w+,寫(xiě)讀【可讀,可寫(xiě)】,消除文件內容,然后以讀寫(xiě)方式打開(kāi)文件。
x+ ,寫(xiě)讀【可讀,可寫(xiě)】
a+, 寫(xiě)讀【可讀,可寫(xiě)】,以讀寫(xiě)方式打開(kāi)文件,并把文件指針移到文件尾。
rb 或 r+b
wb 或 w+b
xb 或 w+b
ab 或 a+b
注:以b方式打開(kāi)時(shí),讀取到的內容是字節類(lèi)型,寫(xiě)入時(shí)也需要提供字節類(lèi)型,不能指定編碼
將寫(xiě)入文件的2行代碼加入
requests : URL = + ip r = requests.get(URL,timeout=) json_data = r.json() region = json_data[][] region == : open(,) fw: fw.write( + ip) : : open() f: ips = f.read().split() ip ips: checkip(ip)
運行腳本
:\\92039\> 2
會(huì )在桌面創(chuàng )建一個(gè)a.txt文檔,結果為
222.31.41.253
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。
Copyright ? 2009-2021 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 珠海市特網(wǎng)科技有限公司 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站