本次案例代碼實現思路: 本次案例代碼實現思路: 打開考試網站 selenium --> 瀏覽器驅動 --> 操作瀏覽器 <模擬人的行為做操作瀏覽器> 獲取答案 獲取答案網站鏈接 獲取問題以及答案內容 對比題目以及答案 選出正確答案 獲取問題答案選項 和正確的答案進行對比 如果正確答案和選擇答案一致, ...
本次案例代碼實現思路:
- 本次案例代碼實現思路:
- 打開考試網站
- selenium --> 瀏覽器驅動 --> 操作瀏覽器 <模擬人的行為做操作瀏覽器>
- 獲取答案
- 獲取答案網站鏈接
- 獲取問題以及答案內容
- 對比題目以及答案 選出正確答案
- 獲取問題答案選項
- 和正確的答案進行對比
- 如果正確答案和選擇答案一致, 那就進行點擊
- 進行點擊答題
最終效果
代碼實現
導入模塊
from selenium import webdriver # 導入數據請求模塊 import requests # 導入數據解析模塊 import parsel
打開瀏覽器 webdriver.Chrome(‘驅動路徑’)
- 驅動和代碼放在一起
- 驅動文件和python安裝目錄放在一起
driver = webdriver.Chrome(r'D:\download\anaconda\chromedriver.exe') # 設置全屏 driver.maximize_window()
輸入網址
driver.get('https://www.jsyks.com/kmy-mnks')
獲取問題及答案
lis = driver.find_elements_by_css_selector('div.Exam ul li') page = 1 # for迴圈遍歷, 提取列表裡面的元素 for li in lis: # 獲取屬性 answer_id = li.get_attribute('c') # 答案鏈接的ID # https://tiba.jsyks.com/Post/8f0e0.htm answer_url = f'https://tiba.jsyks.com/Post/{answer_id}.htm' # 獲取答案以及問題 --> <Response [200]> 表示請求成功 response = requests.get(url=answer_url) # 獲取網頁內容 --> 提取答案以及問題內容 轉換數據類型 selector = parsel.Selector(response.text) # 獲取問題 --> 把問題和答案保存資料庫保存 直接比較答案, 自己建立問題庫, 從問題找答案 question = selector.css('#question h1 strong a::text').get() # 獲取答案 answer = selector.css('#question h1 u::text').get()
點擊判斷
if answer == '錯': # 把答案內容改成 錯誤 重新賦值一下 answer = '錯誤' # # 如果答案內容是對的話 elif answer == '對': # 把答案內容改成正確重新賦值一下 answer = '正確' # 獲取問題選項內容 --> b標簽 全部獲取下來 b標簽是在li標簽裡面 driver 表示整個網頁 bs = li.find_elements_by_css_selector('b') num = 1 for b in bs: # 獲取b標簽文本 choose = b.text # 判斷如何答案比兩個元素多的, 就取一個元素 if len(choose) > 2: # [0]提取 字元串裡面第一個元素 choose = choose[0] # 進行對比 選項和答案一致 是否一模一樣 if choose == answer: # 點擊選項 --> 定位到點擊那個元素 LI1 --> 1 表示第一題 b:nth-child(3) 表示第一個答案 driver.find_element_by_css_selector(f'#LI{page} b:nth-child({2+num})').click() print('點擊了') else: print('選項是', choose, '答案是', answer) print(choose) num +=1 page += 1
點擊提交試卷
如果過快,可能程式還沒找到元素 <網頁還沒載入元素出來, 你就直接點了, 可能報錯>
driver.find_element_by_css_selector('div.ExamBtn u.btnJJ').click()