滑块验证码

这篇是对上次写的优化。步骤可以看上篇的,这个我就直接上代码了。

 

import json
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver import ActionChains
#输入账号密码
from PW.mm import USER, WORD


def logins():
    #用户名
    user=wait.until(EC.presence_of_element_located((By.ID,'J-userName')))
    #密码
    password=wait.until(EC.presence_of_element_located((By.ID,'J-password')))
    user.send_keys(USER)
    password.send_keys(WORD)
    #登录
    btn=wait.until(EC.element_to_be_clickable((By.CLASS_NAME,'login-btn')))
    btn.click()
#滑块验证
def verify():
    x=340
    #获取滑块
    block=wait.until(EC.presence_of_element_located((By.ID,'nc_1_n1z')))
    ActionChains(driver).drag_and_drop_by_offset(block,xoffset=x,yoffset=15).perform()
#获取cookies
def cookies():
    with open('12306_cookies.txt', 'w+', encoding='utf-8')as f:
        for i in driver.get_cookies():
            if i:
                f.write(json.dumps(i) + '\n')
driver=webdriver.Chrome()
#反屏蔽
driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
    'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'
})
wait=WebDriverWait(driver,10)
driver.maximize_window()
#找到登录
def page_login(url):
    driver.get(url)
    #找到登录元素
    login=wait.until(EC.presence_of_element_located((By.ID,'J-btn-login')))
    login.click()
    time.sleep(3)
    logins()
    verify()
    #点掉提示框
    wait.until(EC.presence_of_element_located((By.CLASS_NAME,'modal-close'))).click()
    cookies()

if __name__ == '__main__':
    url='https://www.12306.cn/index/'
    driver=page_login(url)

。。。这个是selenium的如果你没学过的话,自己去了解下,这个运行要谷歌浏览器装个驱动的,这个要装到你的python里,你可以搜下。了解了解

 http://chromedriver.storage.googleapis.com/index.html

驱动链接我放在上面了。

那就到此介绍了!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会下雨的~云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值