日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python使用selenium模块模拟登录12306

發布時間:2023/12/20 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python使用selenium模块模拟登录12306 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

selenium模塊概述

  selenium模塊是基于瀏覽器自動化的一個模塊。換句話說使用selenium可以讓瀏覽器根據自己寫的代碼自動運行。

  相應的語法

  ·編寫基于瀏覽器自動化的操作代碼

  ·?發起請求:get(url)

  ·?標簽定位:find系列的方法

  ·?標簽交互:send_ keys( 'xxx')

  ·?執行js程序:excute _script( 'jsCode ')一前進,后退:back() ,forward()

  ·?關閉瀏覽器:quit()

  這里就不贅述selenium模塊的安裝了。

  登錄的具體流程

  總體思路:

  ·?使用selenium向12306網站發起請求,打開登陸頁面

  ·?根據標簽的id值定位到用戶賬號框、用戶密碼框以及登錄按鈕

  ·?填入賬號密碼后,點擊登錄按鈕

  ·?進行滑塊驗證

  ·?登陸成功

  # 根據id獲取用戶賬號輸入框、密碼輸入框

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

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

  # 填入自己的賬號和密碼

  username_tag.send_keys('xxxxxxx')

  time.sleep(1)

  password_tag.send_keys('xxxxxxxx')

  # 根據id獲取登錄按鈕

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

  # 點擊登錄按鈕

  login_btn.click()

  再點擊登錄按鈕后,12306服務器會彈出滑塊驗證的窗口,需要我們使用代碼模擬瀏覽器點擊滑動完成驗證。這里我們使用動作鏈來完成一系列操作:點擊并長按,向指定方向拖拽一定的距離。

  動作鏈使用

  這里我們在介紹下動作鏈的使用,使用動作鏈非常簡單。

  1、導入相應的模塊from selenium.webdriver import ActionChains

  2、用構造方法獲取動作鏈對象

  # 定義動作鏈,點擊并拖拽 

 aco = ActionChains(driver)# 點擊并長按aco.click_and_hold(span)# 位移指定的距離aco.move_by_offset(25,0).perform()

  注意:想讓動作鏈執行相應的操作必須調用.perform()方法。

  完成驗證碼滑塊的拖動

  # 定義動作鏈,點擊并拖拽

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

  規避檢測

  由于12306會識別使用selenium模塊的瀏覽器操作,為了規避相應的檢測,我們還必須添加相應的代碼。
 

 from selenium.webdriver import ChromeOptionschrome_options = Options()chrome_options.add_argument("--disable-blink-features=AutomationControlled")driver = webdriver.Chrome(executable_path='你的chromedriver路徑',chrome_options=chrome_options)

  完整代碼 

 from selenium import webdriverimport requestsfrom lxml import etreefrom selenium.webdriver import Chromefrom selenium.webdriver import ChromeOptionsfrom selenium.webdriver import ActionChainsimport time# 實現無可視化界面from selenium.webdriver.chrome.options import Optionschrome_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()

總結

以上是生活随笔為你收集整理的Python使用selenium模块模拟登录12306的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。