这篇文章是飞总的投稿,飞总本不是做开发的,但是他很爱好编程,又热爱分享。自学go,最近这一两个月又开始学习python,这篇是飞总的投稿。
一程序说明
1、从一个excel中读取网址字段,提前建好xls
2、通过域名查询IP和物理位置信息
3、再将域名和查询到的IP写到另一个excel中,不用提前建好
4、以下中文备注的地方需要改成具体的路径之类的
5、下面的pandas需要提前安装,用pip install pandas
6、socket一般都有,如果有报错,就安装呗,ip2Region不用安装,和此脚本保存在同一目录下即可
二 代码
import pandas as pd
import socket
from ip2Region import Ip2Region
xls=pd.ExcelFile('/home/kali/Desktop/Pythoncode/beian20200316.xls')
domain=pd.read_excel(xls,'beian',usecols=[2])#打开前面那个excel,读取beian这个sheet中的第2列,其实是C列,pandas是从0开始
domainip=[]#定义一个列表
geoobj=Ip2Region('/home/kali/Desktop/Pythoncode/ip2region-2.1.0-release/data/ip2region.db')#改成自己本地的路径
for i in domain['www']:#上面读取第2列后,这里www是指列的列名,可以根据现场改
try:
ip=socket.gethostbyname(i)
region=geoobj.btreeSearch(ip)['region'].decode('utf-8')
#因为是二维表,所以空列表里面需要再套层列表,所以用append方法,即两个维度的列表[[]]
domainip.append([i,ip,region])
#有一个域名有问题,忘了,但报错,直接忽略掉那个就行了
except socket.gaierror:
pass
#将二维列表转换成dataframe
dfdomainip=pd.DataFrame(domainip)
#写到另一个excel中,可以不用提前建,试验了写之前的excel中新sheet,老是全部被覆盖,后续再优化吧
writer=pd.ExcelWriter('/home/kali/Desktop/Pythoncode/domainip.xls')
dfdomainip.to_excel(writer,sheet_name='Sheet1')
#从缓存中写数据到excel中
writer.save()
运行结果截图
参考
ip2region.db使用参考:https://blog.51cto.com/wujianwei/2123493
最后感谢飞总投稿:),欢迎大家投稿。
网友评论