赞
踩
2023.2.16
- """
- - 自动答题脚本(驾驶员科目一题目)
- 思路:打开网站,获取正确的答案;然后对问题进行对比,进行模拟点击就可以了。
- """
- from selenium import webdriver # 网站交互
- from selenium.webdriver.common.by import By # 网站交互
- import requests # 网站数据请求
- import parsel # 网站解析
-
-
- # todo:2.获取答案;对答案网址发送请求并解析数据,提取需要的数据保存在列表中。
- def get_answer(answerUrl):
- html_data = requests.get(url=answerUrl).text # 发送请求获取网页数据。
-
- selector = parsel.Selector(html_data) # 解析数据;
- question = selector.css('#question h1 strong a::text').get() # 在答案界面,获取问题;
- answer = selector.css('#question h1 u::text').get() # 在答案界面,获取答案;
- # 对答案进行纠正;
- if answer == '对':
- answer = '正确'
- elif answer == '错':
- answer = '错误'
- # 保存字典中
- dit = {
- '问题': question,
- '答案': answer
- }
- return dit
-
-
- if __name__ == '__main__':
- # todo:1.获取答案链接。
- driver = webdriver.Firefox() # 实例化浏览器对象;
- driver.get('https://www.jsyks.com/kmy-mnks') # 打开网站;
- # lis = driver.find_elements_by_css_selector('.Content li') # 已淘汰。
- lis = driver.find_elements(By.CSS_SELECTOR, '.Content li') # 获取所有li标签,返回列表;(li标签存储正确答案网址)
-
- answerUrlList = [f'https://tiba.jsyks.com/Post/{li.get_attribute("c")}.htm' for li in lis] # 连接答案网址并存储列表;
- # answers_url=[]
- # for i in lis:
- # li = i.get_attribute('c')
- # answer_url = 'https://tiba.jsyks.com/Post/' + li + '.htm' # 连接答案网址
- # answers_url.append(answer_url) # 添加网址进列表
-
- # todo:3.网页元素找到问题标签,和答案进行对比,模拟点击。
- page = 1 # 第几个问题
- for li, answerUrl in zip(lis, answerUrlList):
- answerDit = get_answer(answerUrl) # 获取答案,返回字典;
- bs = li.find_elements(By.TAG_NAME, 'b') # 获取'b'标签;(正确和错误),答案为两个标签;'b'是网页元素标签;
- num = 1 # 第几个答案;
- for b in bs:
- choose = b.text # 赋值答案;
- print(choose)
- if len(choose) > 2: # 如果答案长度大于2,就是ABCD,小于2就是正确和错误;
- choose = choose[0] # 第一个答案给choose;
- if choose in answerDit['答案']: # 判断choose是否在答案中;然后点击;
- driver.find_element(By.CSS_SELECTOR, f'#LI{page} b:nth-child({num + 2})').click()
-
- num += 1
- page += 1
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。