0


【使用selenium和python,完成自动填写提交网页信息,python脚本,含定时和发送邮件】

一、所需环境有:

一台自己的Linux CentOS操作系统的服务器,安装有python,chrome浏览器,chromedriver.exe等。

在这里插入图片描述

python版本

在这里插入图片描述

Chrome版本

在这里插入图片描述

chromedriver放置位置:

在这里插入图片描述
请添加图片描述

二、自动提交每日信息脚本代码:

xx一日三检.py

#-*- coding: utf-8 -*-import random
import datetime
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
import smtplib
#email 用于构建邮件内容from email.mime.text import MIMEText
#确保以上第三方库都已安装defdoSth():# 把控制网页爬虫selenium程序放在这个类里print(u'这个程序要开始疯狂的运转啦')

    options = Options()
    options.add_argument('--headless')
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-dev-shm-usage')# chrome_driver = r"D:\Python3.7\Anaconda\Lib\site-packages\selenium\webdriver\chrome\chromedriver.exe"
    chrome_driver ="/opt/software/chromedriver"#自己的chromedriver所在位置# 定义一个字典,包含姓名用户名和密码,格式:'姓名 :账号': '密码'
    USER ={'学生一 :xxxxxxxx':'xxxxxxxx','学生二:xxxxx':'xxxxxx','学生三:xxxxx':'xxxxxx','学生四:xxxxxx':'xxxxxx','学生五:xxxxxx':'xxxxxxxxxxx'}#循环登录不同的学生。for key in USER:# print(key.split(':')[0])# print(key.split(':')[1])# print(USER[key])# 学生一
        driver = webdriver.Chrome(executable_path=chrome_driver, chrome_options=options)#登录要提交每日信息的网址
        driver.get('https://xxxxxxx.xxxxx.cn/xxxx/login?')# 将你自己的账号,密码填入对应代码!!print("请先登录!!")
        time.sleep(30)# 定位用户名输入框
        text_label1 = driver.find_element(By.XPATH,'/html/body/app-root/app-right-root/div/div[2]/div[2]/div[2]/div[2]/div/div/div[1]/app-login-normal/div/form/div[1]/nz-input-group/input')
        text_label12 = driver.find_element(By.XPATH,'/html/body/app-root/app-right-root/div/div[2]/div[2]/div[2]/div[2]/div/div/div[1]/app-login-normal/div/form/div[2]/nz-input-group/input')
        text_label1.send_keys(key.split(':')[1])
        text_label12.send_keys(USER[key])
        time.sleep(5)
        driver.find_element(By.XPATH,'/html/body/app-root/app-right-root/div/div[2]/div[2]/div[2]/div[2]/div/div/div[1]/app-login-normal/div/form/div[6]/div/button').click()print('登录成功')
        time.sleep(40)
        driver.find_element(By.ID,'fieldXQ-0').click()# 校区选择
        driver.find_element('id','fieldSFLKXX-0').click()# 是,在校内
        driver.find_element(By.XPATH,'//*[@id="V1_CTRL5"]/option['+str(random.randint(11,13))+']').click()# 早
        driver.find_element(By.XPATH,'//*[@id="V1_CTRL6"]/option['+str(random.randint(11,13))+']').click()# 中
        driver.find_element(By.XPATH,'//*[@id="V1_CTRL7"]/option['+str(random.randint(11,13))+']').click()# 晚
        driver.find_element(By.ID,'fieldSFFR-1').click()# 否
        driver.find_element(By.ID,'fieldGTJZR-1').click()
        time.sleep(2)
        driver.find_element(By.XPATH,'/html/body/div[4]/form/div/div[1]/div[2]/ul/li[1]/a').click()# 提交
        time.sleep(30)
        driver.find_element(By.XPATH,'/html/body/div[6]/div/div[2]/button[1]').click()# 好print(key.split(':')[0]+"  已完成!!!!!")print(key.split(':')[0]+"  已完成!!!!!")print(key.split(':')[0]+"  已完成!!!!!")print(key.split(':')[0]+"  已完成!!!!!")print(key.split(':')[0]+"  已完成!!!!!")
        driver.close()#将每日信息提交的完成情况发送邮件给自己!!(需要修改自己邮箱的一些设置才能收到)defsend_mail(now):# 发信方的信息:发信邮箱,QQ 邮箱授权码
    from_addr ='[email protected]'
    password ='xxxxxxxx'# 收信方邮箱
    to_addr ='[email protected]'# 发信服务器
    smtp_server ='smtp.qq.com'# 邮箱正文内容,第一个参数为内容,第二个参数为格式(plain 为纯文本),第三个参数为编码
    today_date = now.date()
    msg = MIMEText('xxxx已帮已完成【'+str(today_date)+'】日的三检!!!!!!','plain','utf-8')
    server = smtplib.SMTP_SSL(smtp_server)
    server.connect(smtp_server,465)
    server.login(from_addr, password)
    server.sendmail(from_addr, to_addr, msg.as_string())# 关闭服务器
    server.quit()#定时每日的自动填报提交时间!!defmain(h=17, m=0):# doSth()# now = datetime.datetime.now()#     # send_mail(now)# 定义天数#     days = 0whileTrue:
        now = datetime.datetime.now()print(now.hour, now.minute)if now.hour == h and now.minute == m:#每天的17:00,多10到20秒进行自动提交。
            a = random.randint(10,20)
            time.sleep(a)print("等待"+str(a)+"秒")
            doSth()
            send_mail(now)# 每隔60秒检测一次
        time.sleep(60)

main()

请添加图片描述

三、在服务器上以脚本形式运行:

#启动运行该自动网页提交脚本ps -ef |grep python3 #查看python3 的运行程序有哪些cd /root/xxx/One_day_three_inspections  #打开自己的python程序脚本路径nohup python3 -u xx一日三检v2.py > logv2.out 2>&1&#以脚本形式运行,不会因为关闭远程连接工具就关闭python程序,并且输出结果到logv2.out#关闭该脚本ps -ef |grep python3 #查看python3 的运行程序有哪些kill xxxxx #根据查看的脚本程序对应的进程编号,进行kiil,即可关闭。

请添加图片描述

四、大体流程如上所述

因为每天都要提交,有时会忘记,有了这个就不会忘记了。
根据自己的情况再做修改,我的完成成果展示:
脚本及运行结果所在目录:
在这里插入图片描述
启动脚本:
在这里插入图片描述
每天的结果输出:
在这里插入图片描述
每日运行完成所接收到的邮件:

在这里插入图片描述

五、总结:

【1】该项目的设计目的是:使用Selenium爬虫的特点,用控制页面各个标签的方式,自动控制浏览器填写和提交一些繁杂和重复操作,来简化生活中的琐事所造成的不必要的麻烦。

【2】该项目的思路:

1.使用Selenium爬虫的特点,控制浏览器自动填写提交。

2.使用python编写,方便简单,便于维护,减少代码量。

3.使用服务器一直运行的优势,让python自动填写提交脚本一直运行,到点执行自动填写提交。

4.使用email的第三方库,将每日的提交完成情况发给自己,便于查看和监控是否运行成功!!!!

有一说一,按照自己的思路将自己的想法变成现实的感觉真的太好了,跟可贵的是能完美运行!我爱编程!(部分爱)

本项目是完全原创,自己测试使用的,不可用作错误用途和非法用途,使用请写清出处。

标签: python selenium chrome

本文转载自: https://blog.csdn.net/Xiao_cai_gun/article/details/127014196
版权归原作者 宇智波.望 所有, 如有侵权,请联系我们删除。

“【使用selenium和python,完成自动填写提交网页信息,python脚本,含定时和发送邮件】”的评论:

还没有评论