美文网首页
python小程序分享

python小程序分享

作者: 明翼 | 来源:发表于2020-03-18 22:01 被阅读0次

    这篇文章是飞总的投稿,飞总本不是做开发的,但是他很爱好编程,又热爱分享。自学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

    最后感谢飞总投稿:),欢迎大家投稿。

    相关文章

      网友评论

          本文标题:python小程序分享

          本文链接:https://www.haomeiwen.com/subject/wlgkactx.html