当前位置:   article > 正文

【PYTHON】案例之 自动答题脚本(驾照科目一)(源代码)_科目1.py

科目1.py

2023.2.16

  1. """
  2. - 自动答题脚本(驾驶员科目一题目)
  3. 思路:打开网站,获取正确的答案;然后对问题进行对比,进行模拟点击就可以了。
  4. """
  5. from selenium import webdriver # 网站交互
  6. from selenium.webdriver.common.by import By # 网站交互
  7. import requests # 网站数据请求
  8. import parsel # 网站解析
  9. # todo:2.获取答案;对答案网址发送请求并解析数据,提取需要的数据保存在列表中。
  10. def get_answer(answerUrl):
  11. html_data = requests.get(url=answerUrl).text # 发送请求获取网页数据。
  12. selector = parsel.Selector(html_data) # 解析数据;
  13. question = selector.css('#question h1 strong a::text').get() # 在答案界面,获取问题;
  14. answer = selector.css('#question h1 u::text').get() # 在答案界面,获取答案;
  15. # 对答案进行纠正;
  16. if answer == '对':
  17. answer = '正确'
  18. elif answer == '错':
  19. answer = '错误'
  20. # 保存字典中
  21. dit = {
  22. '问题': question,
  23. '答案': answer
  24. }
  25. return dit
  26. if __name__ == '__main__':
  27. # todo:1.获取答案链接。
  28. driver = webdriver.Firefox() # 实例化浏览器对象;
  29. driver.get('https://www.jsyks.com/kmy-mnks') # 打开网站;
  30. # lis = driver.find_elements_by_css_selector('.Content li') # 已淘汰。
  31. lis = driver.find_elements(By.CSS_SELECTOR, '.Content li') # 获取所有li标签,返回列表;(li标签存储正确答案网址)
  32. answerUrlList = [f'https://tiba.jsyks.com/Post/{li.get_attribute("c")}.htm' for li in lis] # 连接答案网址并存储列表;
  33. # answers_url=[]
  34. # for i in lis:
  35. # li = i.get_attribute('c')
  36. # answer_url = 'https://tiba.jsyks.com/Post/' + li + '.htm' # 连接答案网址
  37. # answers_url.append(answer_url) # 添加网址进列表
  38. # todo:3.网页元素找到问题标签,和答案进行对比,模拟点击。
  39. page = 1 # 第几个问题
  40. for li, answerUrl in zip(lis, answerUrlList):
  41. answerDit = get_answer(answerUrl) # 获取答案,返回字典;
  42. bs = li.find_elements(By.TAG_NAME, 'b') # 获取'b'标签;(正确和错误),答案为两个标签;'b'是网页元素标签;
  43. num = 1 # 第几个答案;
  44. for b in bs:
  45. choose = b.text # 赋值答案;
  46. print(choose)
  47. if len(choose) > 2: # 如果答案长度大于2,就是ABCD,小于2就是正确和错误;
  48. choose = choose[0] # 第一个答案给choose;
  49. if choose in answerDit['答案']: # 判断choose是否在答案中;然后点击;
  50. driver.find_element(By.CSS_SELECTOR, f'#LI{page} b:nth-child({num + 2})').click()
  51. num += 1
  52. page += 1

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/878759
推荐阅读
相关标签
  

闽ICP备14008679号