Python usa el módulo de selenio para simular el inicio de sesión 12306

Descripción general de los módulos de selenio

  El módulo de selenio es un módulo basado en la automatización del navegador . En otras palabras, el uso de selenio puede permitir que el navegador se ejecute automáticamente de acuerdo con el código escrito por él mismo.

  sintaxis correspondiente

  Escribir código operativo para la automatización basada en navegador

  ·  Iniciar una solicitud: get(url)

  Posicionamiento de etiquetas: el método de búsqueda de series 

  ·  Interacción de pestañas: send_keys('xxx')

  ·  Ejecute el programa js: ejecute _script('jsCode') para avanzar y retroceder: atrás() ,adelante()

  ·  Cierra el navegador: quit()

  No entraré en detalles sobre la instalación del módulo de selenio aquí.

  El proceso específico de inicio de sesión

  Idea general:

  ·  Use selenium para iniciar una solicitud al sitio web 12306 y abra la página de inicio de sesión

  Ubique el cuadro de cuenta de usuario, el cuadro de contraseña de usuario y el botón de inicio de sesión de acuerdo con el valor de identificación de la etiqueta 

  Después de completar la contraseña de la  cuenta, haga clic en el botón de inicio de sesión

  Realizar  la verificación del control deslizante

  ·  Inicio de sesión exitoso

  # Obtenga el cuadro de entrada de la cuenta de usuario y el cuadro de entrada de la contraseña de acuerdo con la identificación

  nombre_de_usuario = conductor.find_element_by_id('J-userName')

  contraseña_etiqueta = conductor.find_element_by_id('J-contraseña')

  # Complete su propia cuenta y contraseña

  nombre_de_usuario.send_keys('xxxxxxx')

  tiempo.dormir(1)

  contraseña_etiqueta.send_keys('xxxxxxxx')

  # Obtenga el botón de inicio de sesión por id

  login_btn = driver.find_element_by_id('J-login')

  # Haga clic en el botón de inicio de sesión

  login_btn.click()

  Después de volver a hacer clic en el botón de inicio de sesión, el servidor 12306 abrirá la ventana de verificación del control deslizante, lo que requiere que usemos el código para simular que el navegador haga clic y deslice para completar la verificación. Aquí usamos la cadena de acción para completar una serie de operaciones: haga clic y mantenga presionado, arrastre una cierta distancia en la dirección especificada.

  Uso de la cadena de acción

  Aquí presentamos el uso de cadenas de acción.Usar cadenas de acción es muy simple.

  1. Importe el módulo correspondiente de selenium.webdriver import ActionChains

  2. Usa el constructor para obtener el objeto de la cadena de acción.

  # Defina la cadena de acción, haga clic y arrastre 

 aco = ActionChains(driver)

  # 点击并长按

  aco.click_and_hold(span)

  # 位移指定的距离

  aco.move_by_offset(25,0).perform()

  Nota: Se debe llamar al método .perform() para que la cadena de acción realice la operación correspondiente.

  Termine de arrastrar el control deslizante de captcha

  # Defina la cadena de acción, haga clic y arrastre

  aco = ActionChains(driver)

  # 点击并长按

  aco.click_and_hold(span)

  #perform()立即执行动作链操作

  for i in range(5):

      aco.move_by_offset(25,0).perform()

      time.sleep(0.3)

  # 释放动作链

  aco.release()

  Evitar la detección

  Dado que 12306 reconocerá las acciones del navegador que utilizan módulos de selenio, para evitar la detección correspondiente, también debemos agregar el código correspondiente.
 

 from selenium.webdriver import ChromeOptions

  chrome_options = Options()

  chrome_options.add_argument("--disable-blink-features=AutomationControlled")

  driver = webdriver.Chrome(executable_path='你的chromedriver路径',chrome_options=chrome_options)

  código completo 

 from selenium import webdriver

  import requests

  from lxml import etree

  from selenium.webdriver import Chrome

  from selenium.webdriver import ChromeOptions

  from selenium.webdriver import ActionChains

  import time

  # 实现无可视化界面

  from selenium.webdriver.chrome.options import  Options

  chrome_options = Options()

  chrome_options.add_argument("--disable-blink-features=AutomationControlled")

  # 这里填入你自己的chromedriver的安装路径

  driver = webdriver.Chrome(executable_path='C:/Users/Declan/AppData/Local/Google/Chrome/Application/chromedriver',chrome_options=chrome_options)

  driver.get('https://kyfw.12306.cn/otn/resources/login.html')

  # 根据id获取用户账号输入框、密码输入框

  username_tag = driver.find_element_by_id('J-userName')

  password_tag = driver.find_element_by_id('J-password')

  # 填入自己的账号和密码

  username_tag.send_keys('xxxxxxxx')

  time.sleep(1)

  password_tag.send_keys('xxxxxx')

  # 根据id获取登录按钮

  login_btn = driver.find_element_by_id('J-login')

  # 点击登录按钮

  login_btn.click()

  # 这里必须得休眠,不然运行速度太夸,代码难以定位到滑块

  time.sleep(2)

  span = driver.find_element_by_css_selector('.btn_slide')

  # 定义动作链,点击并拖拽

  aco = ActionChains(driver)

  # 点击并长按

  aco.click_and_hold(span)

  #perform()立即执行动作链操作

  for i in range(5):

      aco.move_by_offset(25,0).perform()

      time.sleep(0.3)

  # 释放动作链

  aco.release()

  time.sleep(2)

  ok_btn = driver.find_element_by_css_selector('.ok')

  ok_btn.click()

  time.sleep(5)

  driver.quit()

Supongo que te gusta

Origin blog.csdn.net/qq_60168783/article/details/123583833
Recomendado
Clasificación