赞
踩
室友的家长喜欢收集纪念币,纪念币是需要预约的,而且每个人同一种货币只能预约一份,如果想要给很多人预约,恐怕要一个一个点,因此,我突然回想起曾经接触过的一个知识——selenium,曾经的回忆涌上心头。
1、电脑一台(带有pycharm软件)
2、Edge浏览器驱动(对应自己的浏览器版本)
3、验证码识别工具
4、屏幕前的吴彦祖一位
驱动下载地址:Microsoft Edge WebDriver | Microsoft Edge Developer
根据自己电脑的操作系统版本或浏览器版本选择对应的驱动版本。
下载完成后,将浏览器驱动放在你的Python当前工程根目录下
众所周知,有些网站在输入完账号信息后需要输入验证码才可以登录,这个验证码识别工具就可以解决这个问题,我使用的是http://ttshitu.com/这家的工具,需要花好像是1元钱可以识别1000次,用起来很不错,购买后,进入这家的用户文档http://www.ttshitu.com/docs/index.html?spm=null找到自己使用的语言,怎样使用人家都会说明清楚。
这里我演示用的是https://www.gushiwen.cn/古诗文网
- import time
- import base64
- import json
- import requests
- from selenium import webdriver
- from selenium.webdriver.common.by import By
- li = 0
- email_list = ['1233211232@qq.com', "1111111111@qq.com", "1234567891@qq.com", "9876543219@qq.com"] # 邮箱库(假的)
- code_list = [123456,654321,777777,555555] # 密码库(假的)
-
-
- def base64_api(uname, pwd, img, typeid):
- with open(img, 'rb') as f:
- base64_data = base64.b64encode(f.read())
- b64 = base64_data.decode()
- data = {"username": uname, "password": pwd, "typeid": typeid, "image": b64}
- result = json.loads(requests.post("http://api.ttshitu.com/predict", json=data).text)
- if result['success']:
- return result["data"]["result"]
- else:
- return result["message"]
- return ""
- def send_web():
- option = webdriver.EdgeOptions()
- option.add_experimental_option("detach", True) # 防止浏览器自己关闭
- global driver # 声明为全局
- driver = webdriver.Edge(options=option)# 防止浏览器自己关闭
- driver.get('https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx') # 登录页面网站
-
- def write():
- for li in range(len(email_list)):
- send_web() # 对登录页面发起请求
- time.sleep(2)
- email = driver.find_element(By.XPATH, '//*[@id="email"]')
- email.send_keys(email_list[li]) # 填入邮箱账号
- time.sleep(2)
- pwd = driver.find_element(By.XPATH, '//*[@id="pwd"]')
- pwd.send_keys(code_list[li]) # 填入密码
- time.sleep(2)
- code = driver.find_element(By.XPATH, '//*[@id="imgCode"]').screenshot('code.png') # 截取目标验证码图片到项目根目录
- img_path = "D:/Pycharm_Project/pythonProject_selenium/code.png" # 截取的验证码地址(这里填自己的,这个是我的)(不要有中文路径)
- result = base64_api(uname='填自己的', pwd='填自己的', img=img_path, typeid=3) # typeid是验证码格式,目标验证码格式根据所需填写(这里是英数组合)
- code = driver.find_element(By.XPATH, '//*[@id="code"]')
- code.send_keys(result) # 填入验证码
- time.sleep(2)
- li += 1 # 填写下一个人的
- driver.quit() # 关闭浏览器
-
- if __name__ == "__main__":
- write()

(1)这里身份信息库和密码库根据自己实际情况填写
(2)用户名(uname)和密码(pwd)填自己在图片识别官网上注册的
(3)这里我在填写完验证码后两秒后直接关闭浏览器了,没有写登录的点击代码,因为只是示范作用,所以不要认为是BUG啊。
(4)用户账户密码库自行处置,我所提供的都是假的
(5)selenium库我用的是4.15.2版本
(6)思路给大家介绍到这里。
selenium最常见是的谷歌浏览器的使用,但是也有很多人和我一样对Edge浏览器情有独钟,但是往上有关的selenium相关的介绍要么就是年代久远,要么就是少的可怜,当时最让我头疼的就是使用selenium打开浏览器浏览器会自动关闭,最终花了一下午才解决问题,写下此文,用以重新唤醒未来的我。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。