获取dnspod指定域名的记录

#!/usr/bin/python
#-*- coding: utf-8 -*-
import os,requests,json
import re,time,xlsxwriter

#时间
date=time.strftime("%Y-%m-%dT%H-%M-%S", time.localtime())
#文件名 
name='域名记录-{0}.xlsx'.format(date)
#指定域名
domail_name=""

#登录测试
url='https://dnsapi.cn/Info.Version'
token=''

data={'login_token':'{0}'.format(token),'format':'json'}
r = requests.post(url,data=data)
if r.json()['status']['code'] != '1':
    print('登录失败,检查网站,token,id')
    exit(0)
else:
    print('登录成功,正在执行脚本')


url='https://dnsapi.cn/Domain.List'

data={'login_token':'{0}'.format(token),'format':'json','type':'all'}
r = requests.post(url,data=data)
json_data=r.json()

id_name=dict()
domain_name_all=json_data['domains']
for i in domain_name_all:
    if domail_name == i['name']:
        id_name[i['id']]=i['name']

#获取域名记录
#获取全部域名的记录
url='https://dnsapi.cn/Record.List'
all_data=[]
#获取域名id
for i in id_name.keys():
    #获取的参数
    data={'login_token':'{0}'.format(token),'format':'json','domain_id':i}
    r = requests.post(url,data=data)
    json_data=r.json()
    #获取到的内容写入数组
    all_data.append(json_data)

#筛选出匹配的内容
doamin=dict()
doamin_max=[]
#匹配域名ip
for i in all_data:
    #用于临时存放域名的数据
    tmp=[]
    #计算记录总数
    num=0
    for ii in i['records']:
        #获取ip段,ip段获取为空则设置为空
        if re.search('([0-9]{1,3}.){3}',ii['value']):
            #获取ip段
            tmp_ip=re.search('([0-9]{1,3}.){3}',ii['value']).group()
            #调整这里可以控制获取api的数据内容
            tmp.append({'name':ii['name'],'ip':tmp_ip,'line':ii['line'],'value':ii['value'],'enabled':ii['enabled']})
        else:
            #调整这里可以控制获取api的数据内容
            tmp.append({'name':ii['name'],'ip':'','line':ii['line'],'value':ii['value'],'enabled':ii['enabled']})
        num+=1
    domain_name=i['domain']['name']
    doamin_max.append({'name':domain_name,'num':num})
    #判断是否为空,不为空代表该域名有符合条件的数据
    if len(tmp)!=0:
        doamin[i['domain']['name']]=tmp



#设置文件名
workbook=xlsxwriter.Workbook(name)
#设置宽度
worksheet=workbook.add_worksheet()
worksheet.set_column('A:B',20)
worksheet.set_column('C:C',22)
worksheet.set_column('D:D',20)
worksheet.set_column('E:E',15)
worksheet.set_column('F:F',15)
worksheet.set_column('H:H',20)
worksheet.set_column('I:I',15)
worksheet.freeze_panes(1,0)#
#设置单元格背景
xlsx_err=workbook.add_format()
xlsx_err.set_bg_color('#D9534F')

#设置文档第一栏
title = [u'域名',u'子域名',u'IP段',u'IP',u'线路',u'启用','',u'域名',u'总数']
worksheet.write_row('A1',title)
#初始值为2
num=2
#循环域名ID
for i in doamin.keys():
    #循环域名里的记录
    for ii in doamin[i]:
        #数组变量
        tmp=[i,ii['name'],ii['ip'],ii['value'],u'{0}'.format(ii['line']),ii['enabled']]
        #1为启用,0为未启用,未启用的标红
        if ii['enabled'] == '1': 
            worksheet.write_row('A{0}'.format(num),tmp)
        else:
            worksheet.write_row('A{0}'.format(num),tmp,xlsx_err)
        
        #自动加1
        num += 1
#设置筛选
worksheet.autofilter('A1:F{0}'.format(num-1))

#写入域名总数
num=2
for i in doamin_max:
    tmp=[i['name'],i['num']]
    worksheet.write_row('H{0}'.format(num),tmp)
    num +=1

#关机文档
workbook.close()
#
print('执行完毕,文件路径'+os.path.abspath(os.curdir)+"\"+name)

#print (r.json())
#print (r.text)
原文地址:https://www.cnblogs.com/cainiaoit/p/8582551.html