python3怎么实现简单的ip提取功能

这篇文章主要讲解了“python3怎么实现简单的ip提取功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python3怎么实现简单的ip提取功能”吧!

这篇文章主要讲解了“python3怎么实现简单的ip提取功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python3怎么实现简单的ip提取功能”吧!

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:国际域名空间、网络空间、营销软件、网站建设、西夏网站维护、网站推广。

准备环境python3,win10系统,当然linux更好,win下需要安装reuqests模块(调用第三方接口进行ip归属地查询需要发起请求)

\Users\\Desktop>pip install requestsCollecting requests  Downloading requests-.-py2.py3-none-any.whl (kB)%  kB kB/sCollecting chardet<.,>=. (from requests)  Downloading chardet-.-py2.py3-none-any.whl (kB)%  kB kB/sCollecting idna<,>= (from requests)  Downloading idna--py2.py3-none-any.whl (kB)%  kB MB/sCollecting urllib3<,>=. (from requests)  Downloading urllib3--py2.py3-none-any.whl (kB)%  kB kB/sCollecting certifi>=. (from requests)  Downloading certifi-.-py2.py3-none-any.whl (kB)%  kB MB/sInstalling collected  chardet, idna, urllib3, certifi, requestsSuccessfully installed certifi-. chardet-. idna- requests-. urllib3-

我这里调用阿里的第三方接口进行IP归属地查询,接口地址http://ip.taobao.com/instructions.php

接口描述1. 请求接口(GET):/service/getIpInfo.php?ip=[ip地址字串]2. 响应信息:(json格式的)国家 、省(自治区或直辖市)、市(县)、运营商3. 返回数据格式:{:0,:{:,:,:,:,:,:,:,:,:,:,:,:,:}}其中code的值的含义为,0:成功,1:失败。

这里大概介绍一下思路,读取文件,定义函数,进行循环,发起请求,接收参数,判断,筛选并写入文件,完成。

运行python文件先写头文件格式,告诉系统运行python3的代码,并且以utf-8编码
#!usr/bin/python3
#-*-coding:utf-8-*-

 requests requests requests    URL =  + ip    r = requests.get(,timeout=)     print() ip = checkip(ip)

运行代码结果如下,初步判断代码应该没问题
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

山西省

测试成功

即便Python程序的语法是正确的,在运行它的时候,也有可能发生错误。运行期检测到的错误被称为异常。大多数的异常都不会被程序处理,而是以错误形式展现

这时候就要进行异常处理

引入try/except

:        x = / ZeroDivisionError  err:        print(, err)yichang()    
C:\Users\92039\Desktop>python 5.py

异常: division by zero

如果未做异常处理将直接报错,导致程序无法继续执行部

 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)

然后需要加入打开文件部分的代码

当做文件处理时,需要获取一个文件句柄,从文件中读取数据,然后关闭文件句柄。

file = open()data = file.read()file.close()    

这里有两个问题。一是可能忘记关闭文件句柄;二是文件读取数据发生异常,没有进行任何处理

然而with可以很好的处理上下文环境产生的异常

= f.read()

 open()  f:           ips = f.read().split()    ip  ips:                       print(ip)

ips.txt中写入了3个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会打印两次,由运行结果可知只有第一个ip属于山西省

接下来要加入写入文件的模块,将属于山西省的ip全部写入一个文件

 open(,)  fw:    i  range():        fw.write()原有数据1234

运行脚本后
1
2
3
4
a
a
a
a

a

补充一下文件操作的知识文件打开模式    

r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】

w,只写模式【不可读;不存在则创建;存在则清空内容】

x, 只写模式【不可读;不存在则创建,存在则报错】

a, 追加模式【可读;   不存在则创建;存在则只追加内容】,文件指针自动移到文件尾。

"+" 表示可以同时读写某个文件    

r+, 读写【可读,可写】

w+,写读【可读,可写】,消除文件内容,然后以读写方式打开文件。

x+ ,写读【可读,可写】

a+, 写读【可读,可写】,以读写方式打开文件,并把文件指针移到文件尾。

"b"表示以字节的方式操作,以二进制模式打开文件,而不是以文本模式。    

rb  或 r+b

wb 或 w+b

xb 或 w+b

ab 或 a+b

注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码

将写入文件的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

会在桌面创建一个a.txt文档,结果为

222.31.41.253

网页标题:python3怎么实现简单的ip提取功能
转载源于:https://www.cdcxhl.com/article18/cjpgp.html

成都网站建设公司_创新互联,为您提供外贸网站建设网站收录网页设计公司用户体验移动网站建设网站维护

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

商城网站建设