Python爬虫练习(三)

文章目录


前言

使用selenium库模拟鼠标点击和键盘输入完成体温上报。

一、隐藏cmd黑框

打开phython所在文件夹\Lib\site-packages\selenium\webdriver\common\service.py。
在start函数中的subprocess.Popen中添加参数creationflags = 134217728

二、代码

1、引入库

from selenium import webdriver
import time

2、登录

def login():
    try:
        global driver
        driver.maximize_window() #最大化窗口,展示验证码
        time.sleep(7) #等待
        print("获取登录页面")
        un=driver.find_element_by_id('un')
        pd=driver.find_element_by_id('pd')
        code=driver.find_element_by_id('code') #查找输入框
        un.send_keys("学号")
        pd.send_keys("密码")
        driver.minimize_window() #最小化窗口,回到shell界面
        code.send_keys(input('输入验证码:'))
        driver.maximize_window()
        submit=driver.find_element_by_id('index_login_btn')
        submit.click() #点击
        print('提交登录页面')
    except Exception as e:
        print('登录失败')
        print(e)

3、选择日期

def page1():
    try:
        global driver
        time.sleep(7)
        print("获取日期选择页面")
        me=driver.find_element_by_name('fieldHidden1')
        me.click()
        submit=driver.find_element_by_class_name('command_button_content')
        submit.click()
        print("日期选择提交")
    except Exception as e:
        print("日期选择提交失败")
        print(e)

4、选择人员

def page2():
    try:
        global driver
        time.sleep(7)
        print("获取人员选择页面")
        me=driver.find_element_by_name('fieldxz')
        me.click()
        submit=driver.find_element_by_class_name('command_button_content')
        submit.click()
        print("人员选择提交")
    except Exception as e:
        print("人员选择提交失败")
        print(e)

5、提交体温

def page3():
    try:
        global driver
        time.sleep(7)
        print("获取体温提交页面")
        temp=driver.find_element_by_name('fieldXSZLB')
        temp.send_keys('36.5')
        submit=driver.find_element_by_css_selector('a[class="command_button_content"][id$="_1"]')
        submit.click()
        time.sleep(7)
        sure=driver.find_elements_by_class_name('dialog_button')[0]
        sure.click()
        print("体温提交")
        print("健康上报成功")
    except Exception as e:
        print("体温提交失败")
        print(e)

6、主程序

driver=webdriver.Chrome()
url='网址'
driver.get(url)
login()
page1()
page2()
page3()
print("程序结束")
time.sleep(7)
driver.close()

总结

  • selenium库可以模拟鼠标点击和键盘输入,调试方便,适用于爬取有登录界面的网页。
  • selenium库支持xpath,css等多种查找方式,操作方便。
  • 使用selenium库需要先下载chrome浏览器,并下载相应版本的webdriver驱动器,复制到python的scripts目录下。
  • 需要填写验证码时可以先最大化,停留一段时间后最小化,手动输入。
  • 体温上报的网页不同,需要根据实际情况修改代码。
上一篇:Java 线程池execute和submit的区别


下一篇:Spark学习进度四