国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

python3怎么實(shí)現簡(jiǎn)單的ip提取功能

發(fā)布時(shí)間:2021-09-04 11:56 來(lái)源:億速云 閱讀:0 作者:chen 欄目: 網(wǎng)絡(luò )安全

這篇文章主要講解了“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)模式    
  • r ,只讀模式【默認模式,文件必須存在,不存在則拋出異?!?/p>

  • w,只寫(xiě)模式【不可讀;不存在則創(chuàng )建;存在則清空內容】

  • x, 只寫(xiě)模式【不可讀;不存在則創(chuàng )建,存在則報錯】

  • a, 追加模式【可讀;   不存在則創(chuàng )建;存在則只追加內容】,文件指針自動(dòng)移到文件尾。

"+" 表示可以同時(shí)讀寫(xiě)某個(gè)文件    
  • r+, 讀寫(xiě)【可讀,可寫(xiě)】

  • w+,寫(xiě)讀【可讀,可寫(xiě)】,消除文件內容,然后以讀寫(xiě)方式打開(kāi)文件。

  • x+ ,寫(xiě)讀【可讀,可寫(xiě)】

  • a+, 寫(xiě)讀【可讀,可寫(xiě)】,以讀寫(xiě)方式打開(kāi)文件,并把文件指針移到文件尾。

"b"表示以字節的方式操作,以二進(jìn)制模式打開(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í),將立刻刪除涉嫌侵權內容。

豆国产96在线 | 亚洲| 精品国产肉丝袜久久| 国产在线一区二区在线视频| 人妻妺妺窝人体色WWW聚色窝| 色8久久人人97超碰香蕉987| 亚洲AV无码一区二区三区国产|