快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

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提取功能
标题网址:http://6mz.cn/article/cjpgp.html

其他资讯