之前写过一篇一篇关于刷学习强国的文章,但是存在文章阅读不加分的问题,最近改正了一下,测试了两个账号,均为满满的30分,详细步骤见Python selenium—模拟手动操作达到无人值守学习强国刷积分目的。因为还有很多功能没有写出来,所以并没有像上篇文章一样做GUI,还是是命令黑窗口窗口,如果介意,请忽略此篇文章。
目前仍存在三个小问题,不过并不影响使用,因为这三种类型的题不多见:
- 答题功能不能回答视频题
- 答题功能不能回答判断题
- 答题功能不能回答排序题
针对以上三个问题,目前没有解决方案,只能人工选择了,程序如有存在问题,还请麻烦在评论区留言或者私信
转载请说明出处:https://blog.csdn.net/smart_num_1
改动内容
- 改正步骤
- 初始化
- 文章阅读模块处理
- 使用效果图
- 答题模块
- 文章阅读模块
- 获取方式
改正步骤
初始化
# Author:smart_num_1
# blog:https://blog.csdn.net/smart_num_1
if __name__ == '__main__':
with open('./record-article.txt','r',encoding = 'utf-8') as record:
already_read = record.readlines()
with open('./record-video.txt','r',encoding = 'utf-8') as record:
already_watch = record.readlines()
# 用两个列表,分别储存已经加载过的文章和视频,原因是学习强国对于以阅读过的文章不给予加分
文章阅读模块处理
# Author:smart_num_1
# blog:https://blog.csdn.net/smart_num_1
def page():
os.system('cls')
print('第一项:文章积分')
driver.get(url='https://www.xuexi.cn/d05cad69216e688d304bb91ef3aac4c6/9a3668c13f6e303932b5e0e100fc248b.html')
artical_lis = get_artical_lis(driver=driver)
print('共找到%s篇文章' % len(artical_lis))
articlt_num = 0
for data in artical_lis:
if data.get_attribute('innerText') + '\n' in already_read:
continue
# 在这里一定要注意,在每次保存已加载过文章时,观察下方代码,有个换行符,所以一定要重视这个问题
with open('./record-article.txt','a',encoding = 'utf-8') as record:
record.write(data.get_attribute('innerText'))
record.write('\n')
if articlt_num >= 8:
break
try:
print('正在阅读', data.get_attribute('innerText'))
data.click()
handles = driver.window_handles
driver.switch_to_window(handles[1])
loading_page(driver)
driver.close()
# 上一个版本的程序,会发现打开很多个新标签页,造成内存浪费,这次新加了关闭已阅读过的文章,达到节省内存的目的
driver.switch_to_window(handles[0])
print('已加载', data.get_attribute('innerText'))
articlt_num += 1
except:
continue
使用效果图
答题模块
文章阅读模块
获取方式
- 网盘 提取码: csdn
- 微信获取