zoukankan      html  css  js  c++  java
  • 【Python】批量查询-提取站长之家IP批量查询的结果加强版本v3.0

    1、工具说明

    写报告的时候为了细致性,要把IP地址对应的地区给整理出来。500多条IP地址找出对应地区复制粘贴到报告里整了一个上午。
    为了下次更好的完成这项重复性很高的工作,所以写了这个小的脚本。

    某个项目每次改需求都是这么突然。 应 XX 每天要求各种省份域名统计,再加强下Domain to IP to 地区的脚本。

    Domain2ip2locality.py v2.0 写入到XLS中
    Domain2ip2locality.py v3.0 增加域名解析IP、IP解析地区的部分

    2、使用方法

    把IP写到.txt文件中就可以了,输出到D:utCode_ip_domain目录内的IP.xls内。代码注释中已经说明!

    #-*-coding:utf-8-*-
    
    import sys
    import os
    import requests
    from bs4 import BeautifulSoup
    import tablib
    import socket
    import re
    
    # Domain2ip2locality.py v3.0
    # 作者:zzzhhh
    # 2017-9-30
    # 提取站长之家IP批量查询的结果加强版本-写入到XLS中
    # 增加域名解析IP、IP解析地区的部分
    
    ## 默认存放路径D:\0utCode_ip_domain\ip.xls
    path = "D:\0utCode_ip_domain\"    # 存放路径
    filename = "ip"                       # 文件名称
    dataset1 = tablib.Dataset()           # 数据集合
    
    ip_list = []                          # IP列表
    
    # 写XLS
    def into_els(old_ip,new_ip,taglocality):
        headers = ('域名','ip', '地区')        # 首行字段
        dataset1.headers = headers
        dataset1.append((old_ip,new_ip,taglocality))
    
    
    # 判断是否是IP
    def DetermineIPorDomain(unknow):
        # IP判断的正则
        reip = r'd+.d+.d+.d+'
        ip = re.findall(reip, unknow)
        if len(ip)>0:
            return ip
        else:
            ip = www_ip(unknow)
            return ip
    
    # 域名转换IP
    def www_ip(name):
        try:
            result = socket.getaddrinfo(name,None)
            return result[0][4][0]
        except:
            return 0
    
    #匹配出IP地址函数
    def matchIP (new_ip,old_ip):
        url = "http://ip.chinaz.com/"
        try:
            url = url+str(new_ip)
        except:
            print url
    
        ## 根据传入的IP地址截取出地区
        wbdata = requests.get(url).text
        soup = BeautifulSoup(wbdata, 'lxml')
        for tag in soup.find_all('span', class_='Whwtdhalf w50-0'):
            tag_extractl = tag.get_text().encode('utf-8')
            if tag_extractl.find("IP的物理位置"):     #过滤掉【IP的物理位置】这个字符
                print "%s||%s||%s" % (old_ip,new_ip,tag.get_text())         #输出域名,IP,地区
                into_els(old_ip,new_ip,tag.get_text())                        #写数据到数据集合中
    
    
    #读取文件函数
    def read_file(file_path):
        # 判断文件路径是否存在,如果不存在直接退出,否则读取文件内容
        if not os.path.exists(file_path):
            print 'Please confirm correct filepath !'
            sys.exit(0)
        else:
            with open(file_path, 'r') as source:
                for line in source:
                    ip_list.append(line.rstrip('
    ').rstrip('
    '))
    
        # 遍历IP,通过站长之家查询IP对应地区
        for ip in ip_list:
            to_ip = DetermineIPorDomain(ip)   # 转换
            matchIP(to_ip,ip)
    
        # 写文件到Excel
        hFile = open(path + filename + '.xls', "wb")
        hFile.write(dataset1.xls)
        hFile.close()
    
    
    if __name__ == '__main__':
        file_str=raw_input('Input file ip.txt filepath eg:D:\\test.txt 
    ')
        #file_str = "D:\WebUrl.txt"
        read_file(file_str)    #读取文件
    
    

    3、 代码效果

    用Excel自定义排序就可以可以排序某个特定省份了。。。

  • 相关阅读:
    生活所迫,夫妻俩回到家乡搞养殖,建立公司与村民一起致富
    农村也可以干大事业,小伙返乡种植葡萄,年收益达100万
    为让家人过得更好,她放弃稳定工作选择创业,竟连开四家店
    2年融资3.5亿,她用“网红+短视频”模式掘金6亿下沉人群市场
    从小就对生意耳濡目染的小伙,长大后创业资产过亿
    夫妇俩打工多年后返乡创业,年销售额高达四五十万元
    一道普通菜,却能炒出亿万家业,看她成功的秘诀是什么?
    警示2018:那些值得在年底彻查和回顾的数据库事件
    可扩展性数据库的架构设计
    可扩展性数据库的架构设计
  • 原文地址:https://www.cnblogs.com/17bdw/p/7614164.html
Copyright © 2011-2022 走看看