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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

1.python自动化登录12306

發(fā)布時間:2023/12/20 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1.python自动化登录12306 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

python selenium 自動化登錄12306

1.下載依賴包

pip install selenium # 自動化必須的包

2.下載驅(qū)動

# 下載驅(qū)動 https://npm.taobao.org/mirrors/chromedriver

小編這兒用的是chrome瀏覽器,下載對應(yīng)自己瀏覽器版本的驅(qū)動包

我是windows電腦(根據(jù)個人情況適當(dāng)下載)

把下載到的驅(qū)動放到python的安裝目錄

3.開始代碼編程

  • 第一步 : 訪問12306首頁,獲取到登錄按鈕(copy xpath路徑)

# 打開瀏覽器browser = Chrome()# 設(shè)置瀏覽器窗口大小browser.set_window_size(1400, 1000)# 訪問12306首頁browser.get("https://www.12306.cn/index/")# 獲取[登錄]按鈕login_button = browser.find_element_by_xpath('//*[@id="J-header-login"]/a[1]')# 點擊登錄login_button.click()
  • 第二步 : 到登錄頁面之后, 獲取賬號登錄按鈕并點擊

# 等待賬號登錄按鈕加載出來 element = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "login-hd-account")) ) # 或者直接睡眠2s鐘 time.sleep(2) # 賬號登錄按鈕 account_button = browser.find_element_by_xpath('/html/body/div[2]/div[2]/ul/li[2]/a') account_button.click()
  • 第三步 : 識別驗證碼,使用超級鷹注冊一個賬號,可以免費識別(有分?jǐn)?shù)限制);有不懂得小伙伴可以私聊或者查看超級鷹的api

    # 圖片驗證碼 img_by_xpath = browser.find_element_by_xpath('//*[@id="J-loginImg"]') # 超級鷹識別驗證碼 # 注冊之后會有自己的軟件id 和 key # 軟件ID: 123456 # 軟件KEY: ****************** chaojiying = Chaojiying_Client('12312337866', '123456', '9197123') # 用戶中心>>軟件ID 生成一個替換 96001 # {'err_no': 0, 'err_str': 'OK', 'pic_id': '1147221486687400002', 'pic_str': '180,125|125,132', 'md5': 'e6060d7b4b8a01cb261074cb15c2401e'} coordinate_dic = chaojiying.PostPic(img_by_xpath.screenshot_as_png, 9004) print(coordinate_dic) # 點擊兩個相同的動物或物品,返回:x1,y1|x2,y2 dic_pic_str_ = coordinate_dic['pic_str'] str__split = dic_pic_str_.split("|") for rs in str__split:temp = rs.split(',')x = int(temp[0])y = int(temp[1])# 點擊選中圖片# 事件鏈# 點擊返回的坐標(biāo)即可# 這兒必須有perform()提交事件鏈操作哦,不要忘了ActionChains(browser).move_to_element_with_offset(img_by_xpath,x, y).click().perform()
  • 第四步 : 輸入用戶名和密碼 ,點擊登錄

# 輸入用戶名 密碼 點擊登錄login_account = browser.find_element_by_xpath('//*[@id="J-userName"]')login_password = browser.find_element_by_xpath('//*[@id="J-password"]')# 輸入自己的用戶名密碼login_account.send_keys('1234567890')login_password.send_keys('123123123')time.sleep(2)submit_button = browser.find_element_by_xpath('//*[@id="J-login"]')submit_button.click()
  • 第五步 : 滑塊校驗

# 拖動滑塊校驗 drag_button = browser.find_element_by_xpath('//*[@id="nc_1_n1z"]') # 鼠標(biāo)點擊滑塊拖動300像素 ActionChains(browser).drag_and_drop_by_offset(drag_button, 300, 0).perform()
  • 各位小伙伴到這兒可能發(fā)現(xiàn)還是登錄不上,原因就是12306網(wǎng)站(中國最牛逼的網(wǎng)站,怎么可能那么容易哦)

    登錄不上是因為網(wǎng)站已經(jīng)識別出來是自動化登錄的,所以我們需要關(guān)閉掉自動化標(biāo)識

    chrome 88版本以后的瀏覽器

    #chrome 版本88以后,用下面這種方法options = Options()options.add_argument('--disable-blink-features=AutomationControlled')# 打開瀏覽器browser = Chrome(options=options)

    chrome 88版本以前的瀏覽器

    options = Options()options.add_experimental_option("excludeSwitches", ["enable-automation"])options.add_experimental_option('useAutomationExtension', False)browser = Chrome(options=options, executable_path='./chromedriver')browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"""})

到這兒就到此結(jié)束了,可以登錄上了.

4.完整代碼

附上完整代碼,親測可以運行的哦(需要修改為自己的用戶名密碼哦)

from selenium.webdriver import Chrome from selenium.webdriver.chrome.options import Options from selenium.webdriver import ActionChains from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC import time from pyfile.chaojiying import Chaojiying_Clientif __name__ == '__main__':# 12306 登錄測試# 防止服務(wù)器識別出是自動化控制 window.navigator.webdriver# chrome 版本88以前用這種方法'''options = Options()options.add_experimental_option("excludeSwitches", ["enable-automation"])options.add_experimental_option('useAutomationExtension', False)browser = Chrome(options=options, executable_path='./chromedriver')browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"""})'''#chrome 版本88以后,用下面這種方法options = Options()options.add_argument('--disable-blink-features=AutomationControlled')# 打開瀏覽器browser = Chrome(options=options)# 設(shè)置瀏覽器窗口大小browser.set_window_size(1400, 1000)# 訪問12306首頁browser.get("https://www.12306.cn/index/")# 獲取[登錄]按鈕login_button = browser.find_element_by_xpath('//*[@id="J-header-login"]/a[1]')# 點擊登錄login_button.click()try:element = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "login-hd-account")))print(element)time.sleep(2)# 賬號登錄按鈕account_button = browser.find_element_by_xpath('/html/body/div[2]/div[2]/ul/li[2]/a')account_button.click()time.sleep(3)# 圖片驗證碼img_by_xpath = browser.find_element_by_xpath('//*[@id="J-loginImg"]')# 超級鷹識別驗證碼# 軟件ID: 919703# 軟件KEY: ce58a05f244fa7eb31dc6309186d9b72chaojiying = Chaojiying_Client('18512345678', '12345678', '999999') # 用戶中心>>軟件ID 生成一個替換 96001# {'err_no': 0, 'err_str': 'OK', 'pic_id': '1147221486687400002', 'pic_str': '180,125|125,132', 'md5': 'e6060d7b4b8a01cb261074cb15c2401e'}coordinate_dic = chaojiying.PostPic(img_by_xpath.screenshot_as_png, 9004)print(coordinate_dic) # 點擊兩個相同的動物或物品,返回:x1,y1|x2,y2dic_pic_str_ = coordinate_dic['pic_str']str__split = dic_pic_str_.split("|")for rs in str__split:temp = rs.split(',')x = int(temp[0])y = int(temp[1])# 點擊選中圖片# 事件鏈ActionChains(browser).move_to_element_with_offset(img_by_xpath,x, y).click().perform()time.sleep(2)# 輸入用戶名 密碼 點擊登錄login_account = browser.find_element_by_xpath('//*[@id="J-userName"]')login_password = browser.find_element_by_xpath('//*[@id="J-password"]')login_account.send_keys('13612345678')login_password.send_keys('13612345678')time.sleep(2)submit_button = browser.find_element_by_xpath('//*[@id="J-login"]')submit_button.click()time.sleep(2)# 拖動滑塊校驗drag_button = browser.find_element_by_xpath('//*[@id="nc_1_n1z"]')ActionChains(browser).drag_and_drop_by_offset(drag_button, 300, 0).perform()except Exception as e:print(e)

有想交流的小伙伴可以關(guān)注公眾號哦

總結(jié)

以上是生活随笔為你收集整理的1.python自动化登录12306的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。