重新写了一个东南大学体育场馆的定时预约脚本,使用selenium和chromedriver实现,tesseract识别验证码...

上次写的半成品用的是urllib库直接提交post表单,但是现在不可用了,主要是post请求的字段里,新添了几个不知道的值,而且密码采用的加密是ase128,我是懒的去实现。
正好试一下selenium,selenium是一个很好的用于自动化测试的模块,可以直接调动浏览器,模拟人的输入点击等操作,而且非常简单易用,但是效率相对而言就低一些,因为很多操作要等页面元素加载出来才可以找到。

这次不仅写了脚本,还搭建了一个网站,接受预定,并且写入数据库,每天早上08:01执行预约脚本,有兴趣的或者需要的同学可以看这里,http://116.62.5.101:8000,
后面会再写一篇文章,介绍如何在服务器上部署基于flask网站,数据库,selenium、tesseract4.0、无界面的chrome浏览器和chromdriver。



selenium最核心的使用方法就是使用选择器找到页面的相应的元素作为对象,例如:
bro是一个selenium中webdriver的一个浏览器对象,可以使用find_element_by的方法,通过name,id,class找到元素,
如果这些都没有的元素,可以使用xpath,xpath有兴趣的小伙伴可以去详细了解一下,不过最简单的方法就是F12打开开发者模式之后,右键响应的元素就可以copy它的Xpath。

 

 

tesseract 是一个识别引擎,用于识别验证码





import pymongo
import schedule
import time
import pytesseract
from PIL import Image
from multiprocessing import Pool
from bson import ObjectId
from selenium import webdriver
import datetime
import random
import os


def addmates(matesid,framenum,bro):

button_addmates = bro.find_element_by_id("handle-add")
button_addmates.click()
bro.switch_to.frame("xubox_iframe"+str(framenum))
input_matesid = bro.find_element_by_id("cardNo")
input_matesid.send_keys(matesid)
button_findmate = bro.find_element_by_class_name("search-id")
button_findmate.click()
input_existmates = bro.find_elements_by_class_name("user")
oldcontacts = []
for input_existmate in input_existmates:
# print(input_existmate.get_attribute("textContent"))
oldcontacts.append(input_existmate.get_attribute("textContent").strip())

time.sleep(1)
# print(bro.page_source)
input_newcontact = bro.find_element_by_id("contact")
# print(input_newcontact.
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值