当前位置 博文首页 > python 自动化偷懒的四个实用操作

    python 自动化偷懒的四个实用操作

    作者:米亚流年 时间:2021-04-29 17:56

    自动化有助于解放人们的工作。不过说实话,即使对简单的任务自动化也需要时间和大量的依赖关系管理,而这可能非常复杂。

    Python对于几乎所有东西的交互都很友好。从发送HTTP请求、与API交互、到加载和管理数据库都是如此。因此Python是自动化的绝佳选择。

    以下是用Python实现自动化的四项简单操作,可以帮助完成各种工作流程和项目。

    1.自动移动鼠标,以便Skype / Lynk显示你在工作中处于活动状态

    想象一下,在过去十分钟内,你一直在浏览最喜爱的社交媒体应用中的新闻。突然,Lynk软件中的活动符号变黄,这表明你没有工作,也没有参加会议。

    这时你爱管闲事的老板走了过来,轻拍你的肩膀。

    你很惊讶地抬头,看见老板正瞪着你,因为他有个每时每刻都管理员工的坏习惯。

    “嘿,我希望你放松一下,但告诉我那个模块是怎么出现的。”他问道。你咬紧牙关,提供了某种礼貌的答案。

    “棒极了,好吧,我只是想确保你能集中注意力。副总裁Janice真的希望我们能够在截止日期前完成任务。”

    交谈结束。

    要是Lynk软件的活动符号没有变黄该有多好?

    其实你可以解决这个问题。在谷歌搜索片刻之后,可找到脚本来移动鼠标并开始编写代码,通过每隔几分钟运行一次程序以确保鼠标移动。

    在使用Skype或Lynk时,鼠标和键盘的这些移动可以使你看起来像是在工作中保持活跃状态。

    自动化工作使用Python的PyAutoGUI模块。要安装PyAutoGUI模块,请运行以下命令:

    pip install pyautogui

    Python使用屏幕的坐标系控制并跟踪鼠标。例如,如果屏幕是1920x1080的分辨率,屏幕的坐标系统将如下所示:

    PyAutoGUI模块提供以下功能:

    •size():size()函数可让你了解屏幕分辨率。
    
    import pyautogui
    
    print(pyautogui.size())
    

    运行此文件(保存为.py扩展名),Python代码使用size()函数输出屏幕分辨率的x、y格式:

    •moveTo():PyAutoGUI模块中的moveTo()函数可移动鼠标。下面的代码运用了函数,该函数采用x和y的坐标以及可选的duration(持续时间)参数,使用指定的duration参数将鼠标指针从当前位置移动到x和y的坐标。
    
    import pyautogui
    
    print(pyautogui.size())pyautogui.moveTo(150,100, duration = 2)
    

    运行此Python脚本会发现鼠标指针神奇地从其当前位置移动到坐标(150,100),只用2秒钟就能完成该过程。

    除了其中一些基础知识外,还可以使用click和typewrite等函数,实现单击和输入字符串的自动化。

    这些都可以用来确保你的老板不会很快抓住你在工作中开小差。

    2.使用Selenium自动化网站登录过程

    许多网站都不愿看到用户使用爬虫和程序登录其网站。但是,这仍然是一种很值得一学的技能。

    Selenium是一个有用的库,可使用多种语言、帮助自动化UI QA、甚至可以通过登录来抓取网站。

    虽然学习Selenium可能需要一些时间,但不必学些很难的知识点,只需构建一个可以登录你喜欢的网站的工具。

    开始使用前,必须安装Chrome驱动程序和适用于Python的Selenium库。使用以下命令添加Selenium库:

    Pip install Selenium
    

    首先,需要从Python的Selenium库中导入一些选定的模块。添加以下命令:

    From selenium import webdriverdriver = webdriver.Chrome()
    

    现在,为了实现自动登录,从一个简单的任务开始,比如填写网站的登录表单。

    任务包括:

    • 导航到网站
    • 查找登录字段(通常是用户名和密码)。
    • 填写登录详情信息。
    • 提交登录详情信息,自动完成屏幕登录。

    建议:可以定义“方法”(用于频繁登录)从而在其他测试中启用重用。 代码行可参考:

    From selenium import webdriver
    driver = webdriver.Chrome()
    def login(url,username,password,submit_button):
    driver.get(url)
    driver.find_element_by_id(username).send_keys("username")
    driver.find_element_by_id(password).send_keys("password")
    driver.find_element_by_id(password).(submit_button).click()
    

    注意,你需要获取要与之交互的元素。这可以说是创建登录到站点的Web抓取器或自动登录网站的脚本的难点之一。

    有几种方法可以检测Web应用程序的元素,以查找登录字段。

    查找元素的常用方法包括ID(如上例所示)、CSS选择器、名称和XPaths。

    可以在Selenium的官方文档中找到用于定位登录过程涉及的元素的不同方法。有些网站会使用更多动态内容(比如好几个JavaScript!)。

    总的来说,看着Selenium自动点击按钮并登录到你喜爱的网站这一自动化流程十分吸引人。不需要你的参与就能完成移动与操作。 几乎就像在变魔术!

    3.自动文件备份

    如果要执行常规备份,那么创建自动备份文件非常有用。

    你可能熟悉ZIP文件(扩展名为.zip的文件)。ZIP文件可以包含多个具有压缩内容的文件。而且,由于ZIP文件还可以容纳许多文件夹和子文件夹,因此通过将文件打包成一个文件,可成为备份文件的便捷方式。

    可以使用zipfile模块中的Python函数自动创建单个ZIP文件(称为存档文件)。还可以使用Python打开(或提取)ZIP文件。该脚本如下所示:

    import zipfile, os
    
    def backup(folder)
    folder = os.path.abspath(folder)
    offset = 1
    while True:
        zip_name = os.path.basename(folder) + '_' + str(offset) + '.zip'
    if not os.path.exists(zip_name):
        break
    offset += 1
    print("Successfully created file " % s " %(zip_name))
            backupzip = zipfile.ZipFile(zip_name, 'w') for foldername, subfolders, filenames in os.walk(folder):
            backupzip.write(foldername) backupzip.close() print("done")

    4.自动将YouTube视频发布到Reddit主题

    我们最近看到和想到的另一个一劳永逸的想法是自动执行可能经常执行的任务:使用脚本将多个视频发布到Reddit上。

    在Reddit帖子中发布YouTube视频也可以实现自动化。使用PRAW(一种允许抓取数据的Python包装器)可以为Reddit体验提供更多功能。

    开始使用前,请使用pip安装PRAW。

    下面的脚本会自动将YouTube视频发布到Reddit主题。

    import praw
    
    video_url = str(input("Your video url:"))
    post_msg = str(input("Your post message"))
    reddit = praw.Reddit(client_id = "***************",
        client_secret = "************",
        user_agent = "**********",
        username = "************",
        password = "***********")
    subreddit_list = ["Python", "PytonProjects", "learningprogramming"]
    for i in subreddit_list:
        subreddit = reddit.subreddit(i)
    print("Posting video to" + i)
    subreddit.submit(post_msg, url = video_url)
    print("Done")

    结论

    自动化任务可以带来很多乐趣,特别是看着程序自动登录喜欢的站点,或将数百个文件加载到数据库中。

    而且,还有很多优秀的库可以帮助轻松地实现任务自动化。只要库是可维护的,Excel报告、电子邮件和其他任务就可以通过几行代码简化。

    js
    下一篇:没有了