這篇文章主要講解了“python3怎么實(shí)現(xiàn)簡(jiǎn)單的ip提取功能”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“python3怎么實(shí)現(xiàn)簡(jiǎn)單的ip提取功能”吧!
創(chuàng)新互聯(lián)建站,為您提供成都網(wǎng)站建設(shè)、網(wǎng)站制作公司、網(wǎng)站營(yíng)銷推廣、網(wǎng)站開發(fā)設(shè)計(jì),對(duì)服務(wù)成都銅雕雕塑等多個(gè)行業(yè)擁有豐富的網(wǎng)站建設(shè)及推廣經(jīng)驗(yàn)。創(chuàng)新互聯(lián)建站網(wǎng)站建設(shè)公司成立于2013年,提供專業(yè)網(wǎng)站制作報(bào)價(jià)服務(wù),我們深知市場(chǎng)的競(jìng)爭(zhēng)激烈,認(rèn)真對(duì)待每位客戶,為客戶提供賞心悅目的作品。 與客戶共同發(fā)展進(jìn)步,是我們永遠(yuǎn)的責(zé)任!
準(zhǔn)備環(huán)境python3,win10系統(tǒng),當(dāng)然linux更好,win下需要安裝reuqests模塊(調(diào)用第三方接口進(jìn)行ip歸屬地查詢需要發(fā)起請(qǐng)求)
\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-
我這里調(diào)用阿里的第三方接口進(jìn)行IP歸屬地查詢,接口地址http://ip.taobao.com/instructions.php
1. 請(qǐng)求接口(GET):
/service/getIpInfo.php?ip=[ip地址字串]
2. 響應(yīng)信息:
(json格式的)國(guó)家 、?。ㄗ灾螀^(qū)或直轄市)、市(縣)、運(yùn)營(yíng)商
3. 返回?cái)?shù)據(jù)格式:
{:0,:{:,:,:,
:,:,:,:,
:,:,:,:,
:,:}}
其中code的值的含義為,0:成功,1:失敗。
這里大概介紹一下思路,讀取文件,定義函數(shù),進(jìn)行循環(huán),發(fā)起請(qǐng)求,接收參數(shù),判斷,篩選并寫入文件,完成。
運(yùn)行python文件先寫頭文件格式,告訴系統(tǒng)運(yùn)行python3的代碼,并且以u(píng)tf-8編碼
#!usr/bin/python3#-*-coding:utf-8-*-
requests
requests
requests
URL = + ip
r = requests.get(,timeout=)
print()
ip =
checkip(ip)
運(yùn)行代碼結(jié)果如下,初步判斷代碼應(yīng)該沒問題
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的格式來寫的
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
山西省
測(cè)試成功
即便Python程序的語法是正確的,在運(yùn)行它的時(shí)候,也有可能發(fā)生錯(cuò)誤。運(yùn)行期檢測(cè)到的錯(cuò)誤被稱為異常。大多數(shù)的異常都不會(huì)被程序處理,而是以錯(cuò)誤形式展現(xiàn)
這時(shí)候就要進(jìn)行異常處理
引入try/except
: x = / ZeroDivisionError err: print(, err) yichang()
C:\Users\92039\Desktop>python 5.py
異常: division by zero如果未做異常處理將直接報(bào)錯(cuò),導(dǎo)致程序無法繼續(xù)執(zhí)行部
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
山西省
接下來加入if判斷
requests
:
URL = + ip
r = requests.get(URL,timeout=)
json_data = r.json()
region = json_data[][]
region == :
:
:
ip =
checkip(ip)
然后需要加入打開文件部分的代碼
當(dāng)做文件處理時(shí),需要獲取一個(gè)文件句柄,從文件中讀取數(shù)據(jù),然后關(guān)閉文件句柄。
file = open() data = file.read() file.close()
這里有兩個(gè)問題。一是可能忘記關(guān)閉文件句柄;二是文件讀取數(shù)據(jù)發(fā)生異常,沒有進(jìn)行任何處理
然而with可以很好的處理上下文環(huán)境產(chǎn)生的異常
= f.read()
open() f:
ips = f.read().split()
ip ips:
print(ip)
ips.txt中寫入了3個(gè)ip
222.31.41.253 #山西省 202.12.15.52 #日本 61.135.169.12 #北京
運(yùn)行結(jié)果
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因?yàn)橛袃纱屋敵觯瑢儆谏轿魇〉膇p會(huì)打印兩次,由運(yùn)行結(jié)果可知只有第一個(gè)ip屬于山西省
接下來要加入寫入文件的模塊,將屬于山西省的ip全部寫入一個(gè)文件
open(,) fw:
i range():
fw.write()
原有數(shù)據(jù)
1
2
3
4
運(yùn)行腳本后
1
2
3
4
a
a
a
a
a補(bǔ)充一下文件操作的知識(shí)
文件打開模式"+" 表示可以同時(shí)讀寫某個(gè)文件
r ,只讀模式【默認(rèn)模式,文件必須存在,不存在則拋出異常】
w,只寫模式【不可讀;不存在則創(chuàng)建;存在則清空內(nèi)容】
x, 只寫模式【不可讀;不存在則創(chuàng)建,存在則報(bào)錯(cuò)】
a, 追加模式【可讀; 不存在則創(chuàng)建;存在則只追加內(nèi)容】,文件指針自動(dòng)移到文件尾。
"b"表示以字節(jié)的方式操作,以二進(jìn)制模式打開文件,而不是以文本模式。
r+, 讀寫【可讀,可寫】
w+,寫讀【可讀,可寫】,消除文件內(nèi)容,然后以讀寫方式打開文件。
x+ ,寫讀【可讀,可寫】
a+, 寫讀【可讀,可寫】,以讀寫方式打開文件,并把文件指針移到文件尾。
rb 或 r+b
wb 或 w+b
xb 或 w+b
ab 或 a+b
注:以b方式打開時(shí),讀取到的內(nèi)容是字節(jié)類型,寫入時(shí)也需要提供字節(jié)類型,不能指定編碼
將寫入文件的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)
運(yùn)行腳本
:\\92039\> 2
會(huì)在桌面創(chuàng)建一個(gè)a.txt文檔,結(jié)果為
222.31.41.253
感謝各位的閱讀,以上就是“python3怎么實(shí)現(xiàn)簡(jiǎn)單的ip提取功能”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)python3怎么實(shí)現(xiàn)簡(jiǎn)單的ip提取功能這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
網(wǎng)站題目:python3怎么實(shí)現(xiàn)簡(jiǎn)單的ip提取功能
文章來源:http://m.kartarina.com/article29/jdhjch.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、ChatGPT、移動(dòng)網(wǎng)站建設(shè)、做網(wǎng)站、網(wǎng)站設(shè)計(jì)、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)