学习python有一段时间了,一直没有一个完整的项目。这次总算完成了一个小的项目-自动打开网页答题,虽然还不是很完美,也足够用了。
分享下过程。
首先理清思路:解析网页-->提取题目-->判断是否存在题库中-->答题
1、解析网页,我想到了爬虫中使用的request模块,但是考虑到后边的需要点击进行答题,最后在网上找到了更好用的selenium模块。然后进行selenium的相关配置(配置过程有许多坑,最为关键的就是浏览器对应的版本和webdriver存放位置),学习selenium的相关用法,为了更好的定位网页中的对象安装了selenium IDE插件。经过半天努力,终于能通过Firefox打开网页了。
2、通过selenium IDE插件确定要提取对象的位置,这个可以直接在浏览器的扩展程序中直接查找添加,添加好了记得重启浏览器。在定位对象过程中使用了id,class,css和xpath方法。搜索到以后使用get_attribute得到要操作页面的地址。
3、使用文本处理split方法对地址进行解析,提出题目中的题号,然后在已经知道答案的题库中搜索,如果有,返回答案,如果没有全部选择a。(由于不限制挑战次数,但是每天最多挑战成功3次。所以只答最高分值的题,其他都打错)
4、根据答案选择按钮,然后点击下一个,最后提交。然后再进行下一题,直到挑战成功三次。
在答题过程中还出现了限时答题的情况,需要判断是否存在和跳过,又进行进一步完善。
通过这次完整的小项目,有点小总结,就是网上有许多前人走过的路,总结好的经验,学习就是了,不过要懂得区分好与坏。先找到最核心的问题,简化为一个小的问题,然后在网上查找最简单精准的答案。先解决了,然后再确定一个问题进行解决,就这样逐步进行完善。
脚本如下:
'''
作者:Yeahlv
时间:2019-4-13
版本:v1.0
开发环境:Pycharm
'''
from selenium import webdriver
from selenium.webdriver.support.ui import WebDrive