工作中有时候会遇到很多域名需要转移。转移到这家比较老牌的域名解析服务商。但是这家只能一条一条添加域名和解析,就比较麻烦;于是就写了下批量添加的程序,解放下双手。

1.编写的批量添加dns.he.net网站域名并解析。

# -*- coding: UTF-8 -*-
from selenium import webdriver
import time,os,re,sys
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.action_chains import ActionChains
from sheen import Str
from selenium.webdriver.common.keys import Keys



chromedriver=r"C:\Program Files\Google\Chrome\Application\chromedriver.exe"
#针对编码格式的操作
options = webdriver.ChromeOptions()
options.add_argument("lang=zh_CN.UTF-8")
#options.add_argument('--headless')
#声明浏览器
browser = webdriver.Chrome(chromedriver,options=options)
url = r"https://dns.he.net/"

#username="365dl1"
#password=r"helloworld"

def main():
    while True:
        xuanzhe=input("选择添加dns网站,1 为dns.he.net, 2 为退出:\n")
        if xuanzhe == "1":
            addDns()
        elif xuanzhe == "2":
            print("退出")
            sys.exit()
        else:
            print("退出")
            sys.exit()
        break


def addDns():
    # get打开指定的url,传入要打开的url,
    browser.get(url)
    # 通过find_element_by_name获取到网页标签,send_keys()输入内容,在搜索栏输入python
    username = input("请输入dns.he.net的账号名: \n")
    password = input("请输入%s账号的密码\n" %(username))
    cname = input("请输入cname地址 如: site.365ok365ok.com\n")
    browser.find_element_by_name("email").send_keys(username)
    browser.find_element_by_name("pass").send_keys(password)
    #登录
    browser.find_element_by_xpath("//*[@id='_loginbutton']").click()
    time.sleep(3)
    #点击free dns
    browser.find_element_by_xpath("//*[@id='navigation']/div[3]/div[2]/a[3]").click()
    time.sleep(1)

    #domain = with open("domian.txt" , "r" , encoding="utf-8") as f:
     #   print(f.read())
    path = "domian.txt"
    n = int(input("现在是该账号的第几条域名,第二条请输入 2\n"))

    with open(path, "r") as f:
        while True:

            lineInfo = f.readline()
            if len(lineInfo) < 3:
                break

            #新增域名
            browser.find_element_by_xpath("//*[@id='navigation']/div[2]/ul/li[1]/a").click()
            #点击域名框
            time.sleep(2)
            #browser.find_element_by_xpath("// *[ @ id = '_name']").click()
            #输入域名
            browser.find_element_by_xpath("// *[ @ id = '_name']").send_keys(lineInfo)
            #不定位元素直接回车
            ActionChains(browser).send_keys(Keys.ENTER).perform()
            #browser.find_element_by_xpath("// *[ @ id = '_name']").send_keys(Keys.ENTER)

            time.sleep(5)

            #input("请按回车提交域名:")
            # print("第一次添加域名一般不用手动点击提交域名按钮,后面有时候有需要提交")
            # shou = input("是否手动提交域名y是n为不是,输入其他表示域名有误不能添加,请联系服务商。\n")
            # if shou == "y":
            # #提交域名
            #     browser.find_element_by_xpath("//*[@id='add_zone']/form/input[3]").click()
            # elif shou == "n":
            #     pass
            # else:
            #     print("域名有误, 退出程序")
            #     sys.exit()
            time.sleep(5)

            #进入新增域名编辑页面



            time.sleep(2)
            list_xpath = "//*[@id='domains_table']/tbody/tr[{}]/td[2]".format(n)
            browser.find_element_by_xpath(list_xpath).click()
            print("已添加域名 ", lineInfo)
            #browser.find_element_by_name(lineInfo).click()
            time.sleep(2)
            #新增alias别名信息
            browser.find_element_by_xpath("//*[@id='jsddm']/li[4]/a").click()
            time.sleep(1)
            #点击name
            browser.find_element_by_xpath("//*[@id='_name' and @name='Name']").click()
            #输入
            browser.find_element_by_xpath("//*[@id='_name' and @name='Name']").send_keys("@")
            #点击Hostname
            browser.find_element_by_xpath("//*[@id='_content' and @name='Content']").click()
            browser.find_element_by_xpath("//*[@id='_content' and @name='Content']").send_keys("www." + lineInfo)
            #提交
            ActionChains(browser).send_keys(Keys.ENTER).perform()
            #browser.find_element_by_xpath("//*[@id='_content' and @name='Content']").send_keys(Keys.ENTER)
            # if shou == "y":
            #
            #     browser.find_element_by_xpath("//*[@id='_hds']").click()
            # else:
            #     pass
            time.sleep(2)

            browser.find_element_by_xpath("//*[@id='jsddm']/li[3]/a").click()
            time.sleep(1)

            #点击后输入www
            browser.find_element_by_xpath("//*[@id='_name']").click()
            browser.find_element_by_xpath("//*[@id='_name']").send_keys("www")

            browser.find_element_by_xpath("//*[@id='_content']").click()
            browser.find_element_by_xpath("//*[@id='_content']").send_keys(cname)
            #TTL设置1小时
            browser.find_element_by_xpath("//*[@id='_ttl']").click()
            browser.find_element_by_xpath("// *[ @ id = '_ttl']/option[7]").click()
            #提交
            time.sleep(1)

            browser.find_element_by_xpath("//*[@id='_hds']").click()
            time.sleep(3)
            print("已添加域名%s,且已解析 " %(lineInfo))

            browser.find_element_by_xpath("//*[@id='navigation']/div[3]/div[2]/a[3]").click()
            time.sleep(3)
            n += 1

if __name__ == "__main__":
    main()
    #os.system("pause")
    time.sleep(3)
    browser.close()
    browser.quit()

2.打包成exe可执行文件

PyInstaller  -F 添加dns.py 
Pyinstaller -F "2,添加dns.py" -i zidonghua\tu\favicon.ico

PyInstaller 和 cx_Freeze 服务于相同的目的。

Mac 使用 py2app,PyInstaller 或 cx_Freeze。

pyinstaller xxx.py

注:终端需切换至xxx.py文件所在目录下。

常用可选项及说明:

-F:打包后只生成单个exe格式文件;

-D:默认选项,创建一个目录,包含exe文件以及大量依赖文件;

-c:默认选项,使用控制台(就是类似cmd的黑框);

-w:不使用控制台;

-p:添加搜索路径,让其找到对应的库;

-i:改变生成程序的icon图标。
Last modification:April 23rd, 2021 at 06:20 pm
如果觉得我的文章对你有用,请随意赞赏