Python utilise le module sélénium pour simuler la connexion 12306

Aperçu des modules de sélénium

  Le module selenium est un module basé sur l'automatisation du navigateur . En d'autres termes, l'utilisation de sélénium peut permettre au navigateur de s'exécuter automatiquement en fonction du code écrit par lui-même.

  syntaxe correspondante

  Écrire du code opérationnel pour l' automatisation basée sur un navigateur

  ·  Initier une requête : get(url)

  Positionnement des étiquettes : la méthode de recherche de séries 

  ·  Interaction des onglets : send_keys('xxx')

  ·  Exécutez le programme js : exécutez _script('jsCode ') pour avancer et reculer : back() ,forward()

  ·  Fermez le navigateur : quit()

  Je n'entrerai pas dans les détails de l'installation du module sélénium ici.

  Le processus spécifique de connexion

  idée générale:

  ·  Utilisez le sélénium pour lancer une demande sur le site Web 12306 et ouvrez la page de connexion

  Localisez la boîte de compte d'utilisateur, la boîte de mot de passe d'utilisateur et le bouton de connexion en fonction de la valeur d'identification de la balise 

  Après avoir rempli le  mot de passe du compte, cliquez sur le bouton de connexion

  Effectuer  la vérification du curseur

  ·  Connexion réussie

  # Obtenir la zone de saisie du compte utilisateur et la zone de saisie du mot de passe en fonction de l'identifiant

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

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

  # Remplissez votre propre compte et mot de passe

  username_tag.send_keys('xxxxxxx')

  temps.sommeil(1)

  password_tag.send_keys('xxxxxxxx')

  # Obtenir le bouton de connexion par identifiant

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

  # Cliquez sur le bouton de connexion

  login_btn.click()

  Après avoir cliqué à nouveau sur le bouton de connexion, le serveur 12306 affichera la fenêtre de vérification du curseur, ce qui nous oblige à utiliser le code pour simuler le navigateur pour cliquer et faire glisser pour terminer la vérification. Ici, nous utilisons la chaîne d'action pour effectuer une série d'opérations : cliquez et maintenez enfoncé, faites glisser une certaine distance dans la direction spécifiée.

  Utilisation de la chaîne d'action

  Ici, nous introduisons l'utilisation des chaînes d'action. L'utilisation des chaînes d'action est très simple.

  1. Importez le module correspondant depuis selenium.webdriver import ActionChains

  2. Utilisez le constructeur pour obtenir l'objet de la chaîne d'action

  # Définissez la chaîne d'action, cliquez et faites glisser 

 aco = ActionChains(driver)

  # 点击并长按

  aco.click_and_hold(span)

  # 位移指定的距离

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

  Remarque : La méthode .perform() doit être appelée pour que la chaîne d'actions effectue l'opération correspondante.

  Terminez de faire glisser le curseur captcha

  # Définissez la chaîne d'action, cliquez et faites glisser

  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()

  Éviter d'être repéré

  Étant donné que 12306 reconnaîtra les actions du navigateur qui utilisent des modules de sélénium, afin d'éviter la détection correspondante, nous devons également ajouter le code correspondant.
 

 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)

  code complet 

 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()

Je suppose que tu aimes

Origine blog.csdn.net/qq_60168783/article/details/123583833
conseillé
Classement